アプリ版:「スタンプのみでお礼する」機能のリリースについて

現在ExcelVBAでWebスクレイピングを勉強中で、参照設定→IE起動~HTMLタグ読み込みまでの基本的な流れは理解済みです。

すでに起動してあるIEのWebページのHTMLを読み込み、Excelに書き出す作業をしたいと考えています。
(マクロを実行する時に、最前面にあるブラウザのWebページのHTMLを読み込みたい)

というのも、読み込みたいページにアクセスするまでのマクロを組むのが困難のため、そのページへのアクセスは先に手動でやっておき、マクロを実行するイメージです。


ネットを色々と検索しましたが、下記のようにIE起動からの一連の処理が記述されているものばかりで、起動済みのWebページに対する処理が見つかりませんでした。
具体的なソースコードや、勉強になるサイトがありましたら教えてください。
もしくは、VBAではそのような処理自体が実現不可でしたらその旨も教えてください。

意図が伝わりにくかったらすみません。ご質問ください。
どうぞよろしくお願いいたします。

(学習した内容)
Sub testIE()

Dim objIE As InternetExplorer
Set objIE = CreateObject("Internetexplorer.Application")

objIE.Visible = True
objIE.navigate "url文字列"
Do While objIE.Busy = True Or objIE.readyState < READYSTATE_COMPLETE '読み込み待ち
DoEvents
Loop

Dim htmlDoc As HTMLDocument 'HTMLドキュメントオブジェクトを準備
Set htmlDoc = objIE.document 'objIEで読み込まれているHTMLドキュメントをセット

End Sub

A 回答 (1件)

Shell.Applicationでシェルオブジェクトを作成すると、現在表示されているIEオブジェクトを取得できます。


ここには、IEの他に、エクスプローラもいっしょに取得されるため、
TypeNameを使用して、IEかエクスプローラかを判定してから取得する必要があります。

TypeNameの値
IE:HTMLDocument
エクスプローラ:IShellFolderViewDual3

アクティブのタブを取得する方法が見つかりませんでしたが、下記の例ではウィンドウタイトルで判断して、必要なIEオブジェクトを取得する方法として作ってみました。

Sub getIE()
Dim ie As Object
Dim sh As Object
Dim w As Object
Dim target As String

'取得したいウィンドウのタイトル
target = "goo" 'gooのトップページを取得したい場合

'シェルのオブジェクトを作成する
Set sh = CreateObject("Shell.Application")

'ウィンドウの数だけまわして、必要なものを取得
For Each w In sh.Windows
'IEとエクスプローラがシェルで取得されるため、IEのもののみ処理
If TypeName(w.document) = "HTMLDocument" Then
'IEのウィンドウタイトルで判断
If w.document.Title = target Then
'IEオブジェクトに代入
Set ie = w
Exit For
End If
End If
Next

'取得したIEオブジェクトでの処理
MsgBox ie.LocationURL 'URLを表示

End Sub
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!