既に開いているIEの任意のサイトを開きたいと思います。
VBAでIEを操作する方法はネットを検索しても、
まだ確立されきっていないように感じますので、
素人が学びながら、そこまで深堀せずに簡単に説明していきたいと思います。
【簡単】VBAで既に開いているIEの任意のサイトを表示させる方法~VBA(マクロ)でIE操作
VBAの入門編として、まずIEの画面を表示させる必要があります。
下記コードでは、既に開いているグーグルのページを開くための
コードを記載してみました。
ダブルクリックでコピーできますのでとりあえず張り付けて実行してみてください。
グーグルの検索ページが開いている状態で実行すると
当ブログが検索されると思います。
Sub IEdisplay2()
'IEの起動
Dim objIE As Object 'IEを格納する変数(オブジェクト型)
Dim sh As Object '起動中のShellWindow一式を格納する変数
Dim win As Object 'ShellWindowを格納する変数
Dim document_title As String 'ドキュメントタイトルの一時格納変数
'起動中のShellWindow一式を変数winsに格納
Set sh = CreateObject("Shell.Application")
'ShellWindowから1つずつ取得して処理
For Each win In sh.Windows
'ドキュメントタイトル取得失敗を無視(処理継続)
On Error Resume Next
document_title = ""
document_title = win.document.Title
Debug.Print document_title
On Error GoTo 0
'タイトルバーにGoogleが含まれるかチェック
If InStr(document_title, "Google") > 0 Then
'変数ieに取得したwinを格納
Set objIE = win
'ループを抜ける
Exit For
End If
Next
Dim A As Object
For Each A In objIE.document.getElementsByTagName("INPUT") '①FOR EACH でINPUTをすべて抜き出す。
If A.Name = "q" Then A.Value = "nujonoa_blog" '②IF分で入力したい要素を見つけて ③値を代入
Next
For Each A In objIE.document.getElementsByTagName("INPUT") '①FOR EACH でINPUTをすべて抜き出す。
If A.Name = "btnK" Then A.Click '②IF分で入力したい要素を見つけて ③Click
Next
On Error GoTo 0
End Sub
重要な要素を簡単に説明
重要な要素簡単に説明していこうと思います。
Set objIE = GetObject("", "InternetExplorer.Application")objIE.Visible = True
GetObject(pathname, class)は、
GetObject(pathname, class)は、
外部のアプリケーションにアクセスする関数になっています。
今回はIEに接続するので、classに”InternetExplorer.Application”を入力しています。
これを"Word.Application"に変えるとワードが開けるなどなど
microsoftのアプリケーションにアクセスするための最初の手段となっております。
Set ○○=▲▲
Set ○○=▲▲ は○○を▲▲として扱うというものになり、
簡単な例を示すとでいうと、
Set C11=worksheets("sheet1").cells(1,1)とすると、
それ以降、C11は worksheets("sheet1").cells(1,1) の代わりになります。
ですので、
worksheets("sheet1").cells(1,1).value は C11.value と非常にシンプルに置き換えることができます。
今回はこれ以降、objIE を GetObject("", "InternetExplorer.Application")として取り扱います。
objIE.Visible = True
GetObject関数でIEは開いているのですが、
バックグラウンドで開いているだけになっていますので、
.visible=trueとすることで、表示をさせることができます。
objIE.Navigate "URL"
.Navigate "URL"を用いることで、任意のURLを表示させることができます。
現在はサンプルサイトを表示されるようにしておりますが、
任意のURLに置き換えていただけたらと思います。
While objIE.ReadyState <> 4 Or objIE.Busy = True DoEvents Wend
重たいサイトなどは読み込みをしないと次の動作に移れませんので、
読み込みを完了するのを待つためのコードです。
その他、VBAでIEを動かすために必要な情報をまとめています!!
コメント欄