現在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
No.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
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) EXCEL VBAで NHK NEWSの NEWSデータ内容取得が できない 1 2023/04/09 12:26
- Excel(エクセル) 【マクロ】webアドレスにて指定されたCSVファイル【excelソフト表示】を印刷する件 1 2023/02/15 01:52
- HTML・CSS Chrome のキャッシュについて 3 2022/05/26 07:50
- Excel(エクセル) 【エクセルマクロ】既に開いているIEの、サイズや表示位置を変更するには 4 2022/12/01 22:57
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- ホームページ作成・プログラミング メールフォームで送信すると「通信に失敗しました。ページの再読み込みを...」で送信できません。 2 2023/05/26 18:11
- Android VBA、フォルダのパスに環境文字 ㉑ があり、VBAが機能しません。 2 2022/07/27 09:16
- Visual Basic(VBA) Excel VBAの解読について質問があります。 概要は、マクロでチェックボックスにチェックすると日 1 2023/02/10 07:50
- Excel(エクセル) 【マクロ】スクショ印刷がうまく動かない件 5 2022/12/06 17:37
- PowerPoint(パワーポイント) ExcelのVBAコードについて教えてください。 3 2022/05/25 14:32
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
パワーポイントのVBAでテキスト...
-
Excelで =EMBED("Acrobat Docu...
-
VBAのWindowオブジェクトとWork...
-
LISTBOXの内容が更新されま...
-
多人数のじゃんけんプログラム
-
CoCreateInstanceでエラーになる。
-
error C2712: オブジェクト ア...
-
ADO オブジェクトの渡し方
-
EXCEL VBAにて動的にCheckBOXを...
-
JavaScriptからServletに渡した...
-
ExcelVBAでコントロールのイベ...
-
Outlook2007送信前の宛先確認の...
-
時間帯判定をする。
-
JSPのout.printについて
-
インラインフレームがときどき...
-
ワイルドカード<?>と型パラメー...
-
JSPのスレッドセーフについて
-
DirとFSOの違い
-
Dateにnewを付与せず(関数とし...
-
JAVAからHTMLへ値を返す方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
パワーポイントのVBAでテキスト...
-
Excelで =EMBED("Acrobat Docu...
-
EXCEL VBAにて動的にCheckBOXを...
-
ワイルドカード<?>と型パラメー...
-
C#でフォームのオブジェクト名...
-
VBAのWindowオブジェクトとWork...
-
vb.net オブジェクト指向につい...
-
COMコンポーネントって何?
-
オブジェクトレベルとメタレベル
-
ビジュアルC++でボタンの有...
-
時間帯判定をする。
-
LISTBOXの内容が更新されま...
-
VBA 同じ名前のオブジェクトを...
-
オブジェクト名をforループ内で...
-
Object型からDouble型へのキャスト
-
ADO オブジェクトの渡し方
-
bmp画像をjpegやpng画像に圧縮...
-
Vbで通常使用するプリンターを...
-
戻り値がクラスオブジェクト
-
VBAでvlookup関数から、別シー...
おすすめ情報