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
さぁ!どうだ!!