ExcelVBA(マクロ):Internet Explorerで表示したページのタイトルを取得する方法/Documentプロパティの使い方

IT

ここではVBAでInternetExplorerを起動し、目的のページに遷移した後の処理として、まずは記事のタイトルを取得してみます。
短めの記事ですが、これができればサイト上の色んなデータを収集するとっかかりになります。
遷移するところまではこちら↓

ExcelVBA(マクロ):Internet Explorerを起動して特定のページを表示する方法/Navigateメソッドの使い方
ExcelでIEを起動し、狙ったページを表示するだけのプログラムを書いてみたいと思います。
Advertisements

ページのタイトル取得(InternetExplorer.document)

' vba
Dim obj
Set obj = CreateObject("InternetExplorer.Application")
obj.Visible = True
obj.navigate "https://sunagitsune.com"
まずは前回のコードを使いまわし、IEにアクセスします。
iedocument2
変数objにはInternetExplorer、つまりブラウザが代入されており、Navigateで目的のページへと移動しています。
この状態でobj.document.titleを求めると、ページのタイトルを求めることができます。InternetExplorerにdocumentプロパティを付けた場合対象はDocumentオブジェクトと呼ばれ、TitleはDocumentオブジェクトのプロパティです。
HTMLを外部プログラムの対象としてオブジェクト化しているわけで、これによりいわゆるDOM(Document Object Model)を行うことができます。
iedocument3
ただこのままだとサイトの読み込みが終わる前にタイトルを求めようとする=見つからないのでエラーになる ので、読み込み終了までの待機処理をコピペで入れておきます。
iedocument4
コードを実行するとサイトがIEで開かれ、
iedocument5
そのタイトルがExcel上に表示されます。

コードでは、obj.documentをkijiという変数に代入させることにします。
ややこしいので何もつけてないですが、kijiはInternetExplorerオブジェクトのDocumentプロパティを代入するオブジェクト変数で、型で指定する場合はDim kiji as HTMLDocumentとなります。

' vba
Dim obj
Dim kiji
Set obj = CreateObject("InternetExplorer.Application")
' IEを起動
obj.Visible = True
' ページを遷移
obj.navigate "https://sunagitsune.com"
' 読み込み終了まで待機 
Do While obj.readyState <> 4 Or obj.busy = True
DoEvents
Loop
' 変数にDocumentオブジェクトを代入
Set kiji = obj.document
' ページのTitleタグの内容を表示
MsgBox kiji.title
やりたいことから方法を探すエクセルExcel操作・関数・VBA(マクロ)逆引きまとめ
逆引き(やりたいことから探す)Excel記事まとめ
関数・演算子・メソッド・プロパティ名から探すExcel/VBA(マクロ)使い方・組み合わせ方まとめ
こちらはExcelやメソッドの諸機能を、機能の名称から探せるまとめ記事です。

コメント