実行するには、VBEの画面にて、「Microsoft Internet Controls」と、「Microsoft HTML Object Library」を参照設定してからにします。
また、参照設定(事前バインディング)をしたので、IEのインスタンスの生成は、CreateObjectではなく、Newに変えました。
(参照設定して、CreateObjectしてしまうと2重になってしまうかもしれないので。また、インテリセンスが使いたかったので。)
もちろん、参照設定しないなら、Newではなく、CreateObject に戻してください。
「Microsoft HTML Object Library」がらみのものについても、CreateObject のようなことが必要だと思います。
ちゃんと動かなかったらごめんなさい。
VBA
123Sub test01()
45 Dim ie As InternetExplorer
6 Dim hd_htdoc As HTMLDocument
7 Dim anc_anchor01 As HTMLAnchorElement
8 Dim i As Integer
9 Dim s_HTML As String
10 Dim s_txt As String
1112 Set ie = New InternetExplorer
13 ie.Visible = True
1415 ie.Navigate "http://www.google.co.jp/search?q=" & "steve gadd"
16 waitNavigation ie
171819 Set hd_htdoc = ie.Document
2021 i = 1
2223 'HTMLソースの中の、「<A>タグの部分」を総ざらいします。
24 For Each anc_anchor01 In hd_htdoc.getElementsByTagName("A")
2526 '「anc_anchor01.outerHTML」の中に、
27 '「<h3」という<h3>タグの一部があったら、
28 '検索結果の中のタイトルを取得できるっぽいので
29 '以下の処理。
3031 'ヒットした各Webページの部分の、
32 'タイトルやらURLやタグやら全部を変数に代入
33 s_HTML = anc_anchor01.outerHTML
3435 If 0 < InStr(1, s_HTML, "<h3", vbBinaryCompare) Then
3637 'ヒットした各Webページのタイトル部分のみを変数に代入
38 s_txt = anc_anchor01.outerText
3940 'anc_anchor01.outerText(ヒットしたタイトル) の中に
41 '「改行」がいくつか含まれてしまっていたので "--" に置換して消す。
42 Range("A" & i) = Replace(s_txt, vbCrLf, "--", , , vbBinaryCompare)
43 Range("B" & i) = anc_anchor01.href
4445 i = i + 1
4647 Else
484950 End If
515253 Next anc_anchor01
54555657End Sub
58596061'▼ URL画面の読み込み待ち ▼
62Sub waitNavigation(ie As Object)
6364 Do While ie.Busy Or ie.ReadyState < 4
65 DoEvents
66 Loop
6768End Sub
6970