VBAを使いこなそう!! -9ページ目

VBA入門 セルの操作セルをコピーする

セルをコピーするマクロ


セルA1の値をセルB1にコピーする



Sub sample()


Range("A1").copy Range("B1")


End sub



もっと簡単に書くと


Sub sample()


Range("A1") = Range("B1")


End sub


これだと書式はコピーされません。いわゆる「値のコピー」ってやつですけど、これのがいい時もありますね。


マクロの自動記録でやってみると、


selectionのうんたらかんたら、pasteのなんちゃらとコードができあがりますが、↑のシンプルなやり方で十分で、コードが短い方が処理速度が速いです~。



小さいマクロだと処理速度なんて気にしませんけど・・。



×VBA IE制御 URLを指定して新しいタブで開いてIDとパスワードを入力してログインする

Sub loginaccesstrade()


ID = "otameshi"
Password = "ekuseru"




Const navOpenInNewTab = &H800
Set objShell = CreateObject("Shell.Application")



'開いているIEの数を数えてみる。

OpenCount = 0
For Each objWindow In objShell.Windows

OpenCount= OpenCount+ 1

Next




'IE
オブジェクトがないときは、新しく作成する
If OpenCount = 0 Then

objShell.Windows.Item.Navigate2 "http://www.google.co.jp/ "
Else



objShell.Windows.Item(OpenCount- 1).Navigate2 "https://member.accesstrade.net/at/p/login.do ",navOpenInNewTab                    '新しいタグで指定しURLを開く

        



Set objIE = objShell.Windows.Item(OpenCount- 1)

objIE.document.All.UserName.Value = ID
objIE.document.All.Password.Value = Password
objIE.document.Forms(0).submit

End If





こんな感じできました。


あまり美しくないですね。



Navigate2では新しいページは開かないのかと思っていましたが、 なぜか開きます f(^^;



でも、とりあえずできたのでめでたし。 (←それでいいのか!?)


謎はIEのウィンドウのカウントが実際に開いているよりも 1 多いんですよね。


何を持って・・・ 1 多いのでしょう?


IEそのものをカウントしているのかな?


↑IDとパスワードはダミーです。




エクセルマクロ(VBA)の作り方講座(Excel2007版)

















VBA IE制御 サイトが開くまで待つ

サイトが開かれるまで待つ。。 お約束のステートメントだそうです。

これを差し込んでみて。。



Do While objIE.Busy = True Or objIE.readyState <> 4
DoEvents
Loop



さぁ!どうだ!!