VBA Web Scraping エクセルへ

⚡ スマートサマリー

ウェブスクレイピングping VBAを使用した例tracInternet Explorer の自動化機能を使用して HTML Web ページから ts データを Excel に直接取り込む Microsoft HTMLオブジェクトライブラリを使用して、サイト内を移動したり、HTMLテーブルを読み込み、収集した値をワークシートのセルに書き込んだりします。

  • 🧰 VBAオートメーション: VBAはExcelからInternet Explorerを操作してWebページを読み込み、そのHTMLを読み取ります。
  • 📚 必須参考文献: Microsoft HTMLオブジェクトライブラリと Microsoft プロジェクト内でインターネット制御を参照する必要があります。
  • 🌐 ナビゲーション方法: Navigate メソッドはターゲットを開きます URLそして、コードはページが準備できるまで待機します。
  • 🧱 HTMLテーブルの解析: getElementsByTagName はテーブルを読み込み、その行とセルをループ処理できるようにします。
  • 📊 セルに書き込む: 収集された値はワークシートのセルに書き込まれ、多くの場合、更新ボタンの背後に配置されます。
  • 🤖 AI 支援: AIツールとコパイロットは現在、スクラッチを生成するping レイアウトが変更された際に、セレクタをコーディングして適応させる。

VBA Web Scraping エクセルへ

データスクレイピングとはping?

データスクレイピングping は、tracHTMLウェブページから必要な情報をローカルマシン上のファイルに書き込む。通常、そのローカルファイルはExcelファイル、Wordファイル、または任意のファイルである。 Microsoft オフィスアプリケーション。ウェブページから重要な情報を効率的に取得するのに役立ちます。

データスクレイピングping インターネットを日常的に利用する研究プロジェクトにおいては、その価値が際立ちます。例えば、デイトレーダーがVBAを使用して金融ウェブサイトから市場情報をExcelシートに取り込むExcelマクロを実行する場合を考えてみましょう。

データスクレイピング前にExcelマクロを準備する方法ping (インターネットエクスプローラ)

データスクレイピングを開始する前に、Excelマクロファイルに対して特定の前提条件を実行する必要があります。ping プロセス。

これらの前提条件は以下のとおりです。

ステップ1) Excelベースのマクロを開き、Excelの「開発」オプションにアクセスします。

データスクレイピング前にExcelマクロを準備するping Internet Explorerを使用しています

ステップ2) 開発者リボンから「Visual Basic」オプションを選択します。

データスクレイピング前にExcelマクロを準備するping Internet Explorerを使用しています

ステップ3) 新しいモジュールを挿入します。

データスクレイピング前にExcelマクロを準備するping Internet Explorerを使用しています

ステップ4) 新しいサブルーチンを初期化します。

Sub test()
End Sub

このモジュールは以下のように動作します。

データスクレイピング前にExcelマクロを準備するping Internet Explorerを使用しています

ステップ5) ツール タブの [参照] オプションにアクセスして、 Microsoft HTMLオブジェクトライブラリと Microsoft インターネット制御。

以下のファイルは、Internet Explorerの起動やマクロスクリプトの実行を容易にするため、モジュールに参照として指定する必要があります。

参 考 Microsoft HTMLオブジェクトライブラリとインターネットコントロール

これでExcelファイルはInternet Explorerと連携できる状態になりました。次のステップは、データスクレイピングを容易にするマクロスクリプトを組み込むことです。ping HTMLで。

Excel VBAを使用してInternet Explorerを開く方法

ステップ1) サブルーチン内で、以下のように変数を初期化してください。

Sub test()
Dim ie As New InternetExplorer 
Dim doc As New HTMLDocument

ステップ2) VBAを使用してInternet Explorerを開くには、ie.Visible = Trueと入力してF5キーを押します。

Sub test()
Dim ie As New InternetExplorer 
Dim doc As New HTMLDocument
ie.Visible = True

モジュールは以下のようになります。

Excel VBA を使用して Internet Explorer を開く

Excel VBA を使用して Internet Explorer を開く

VBAを使用してInternet ExplorerでWebサイトを開く方法

VBAを使用してInternet ExplorerでWebサイトを開く手順は以下のとおりです。

ステップ1) Excel VBA を使用して Internet Explorer にアクセスできるようになったら、次のステップは VBA を使用して Web サイトにアクセスすることです。これは Navigate 属性によって実現されます。 URL は二重引用符で渡されます。以下の手順に従ってください。

Sub test()
Dim ie As New InternetExplorer
Dim doc As New HTMLDocument
Dim ecoll As Object
ie.Visible = True
ie.Navigate "https://demo.guru99.com/test/web-table-element.php"
Do
DoEvents
Loop Until ie.readyState = READYSTATE_COMPLETE

ステップ2) F5キーを押してマクロを実行します。すると、図のように次のウェブページが開きます。

VBAを使用してInternet ExplorerでWebサイトを開く

これでExcelマクロはスクレイピングを実行する準備ができましたping 機能。次のステップでは、情報がどのように表現できるかを示します。tracVBA を使用して Internet Explorer から ted を実行します。

VBAを使用してWebサイトから情報をスクレイピングする方法

デイトレーダーがウェブサイトから毎日データにアクセスしたいとします。デイトレーダーがボタンをクリックするたびに、市場データが自動的にExcelに取り込まれるようにする必要があります。

上記のウェブサイトから、要素を検査し、データがどのように構造化されているかを観察する必要がある。

ステップ1) Control + キーを押して、以下の HTML のソースコードにアクセスしてください。 Shift + 私。

<table class="datatable">
<thead>
<tr>
<th>Company</th>
<th>Group</th>
<th>Pre Close (Rs)</th>
<th>Current Price (Rs)</th>
<th>% Change</th>
</tr>

ソースコードは以下のとおりです。

Sub test()
Dim ie As New InternetExplorer
Dim doc As New HTMLDocument
Dim ecoll As Object
ie.Visible = True
ie.Navigate "https://demo.guru99.com/test/web-table-element.php"
Do
DoEvents
Loop Until ie.readyState = READYSTATE_COMPLETE
Set doc = ie.document

ご覧のとおり、データは単一のHTMLテーブルとして構造化されています。したがって、HTMLテーブルからすべてのデータを取得するには、データをコレクションとして収集するマクロを作成する必要があります。

収集したデータはExcelに貼り付けられます。目的の結果を得るには、以下の手順を実行してください。

ステップ2) サブルーチン内でHTMLドキュメントを初期化します。

ステップ3) HTMLドキュメント内に存在するコレクション要素を初期化します。

Sub test()
Dim ie As New InternetExplorer
Dim doc As New HTMLDocument
Dim ecoll As Object
ie.Visible = True
ie.Navigate "https://demo.guru99.com/test/web-table-element.php"
Do
DoEvents
Loop Until ie.readyState = READYSTATE_COMPLETE
Set doc = ie.document
Set ecoll = doc.getElementsByTagName("table")

ステップ4) 図に示すように、ネストされたループを使用してExcelシートのセルを初期化します。

Sub test()
Dim ie As New InternetExplorer
Dim doc As New HTMLDocument
Dim ecoll As Object

ie.Visible = True
ie.Navigate "https://demo.guru99.com/test/web-table-element.php"
Do
DoEvents
Loop Until ie.readyState = READYSTATE_COMPLETE
Set doc = ie.document
Set ecoll = doc.getElementsByTagName("table")

Excelは、シートのRange属性またはCells属性を使用して初期化できます。VBAスクリプトの複雑さを軽減するため、コレクションデータはワークブックのSheet 1のCells属性に初期化されます。

マクロスクリプトの準備ができたら、サブルーチンをExcelボタンに割り当ててVBAモジュールを終了します。ボタンには「更新」など、適切な名前を付けてください。この例では、ボタンのラベルは「更新」とします。

VBAを使用してWebサイトから情報をスクレイピングする

ステップ5) 更新ボタンを押すと、以下の出力が表示されます。

VBAを使用してWebサイトから情報をスクレイピングする

ステップ6) Excelでの結果とInternet Explorerでの結果を比較してください。

VBAを使用してWebサイトから情報をスクレイピングする

よくあるご質問

VBA エディターの [ツール]、[参照] で 2 つの参照が必要です。 Microsoft HTMLオブジェクトライブラリと Microsoft インターネット コントロール。VBA で Internet Explorer を開き、 URLそして、ページのHTML要素を読み取ります。

ウェブサイトによります。多くのサイトでは自動スクレイピングを制限しています。ping 利用規約に記載されているので、まずはそれらをよく確認し、個人情報や著作権で保護されたデータの収集は避けてください。ping 公開されている、個人による分析が許可されているデータは、一般的にリスクが低い。

Internet Explorer は非推奨なので、最新のプロジェクトでは Selenium VBA Chrome を推進するアプローチ、 Firefox、または Edge。 Selenium 複数のブラウザに対応し、既存のウェブサイトにおける要素の位置特定をより確実にします。

はい。AI搭載のスクレイパーとコパイロットはデータフィールドを識別し、trac機械学習モデルは非構造化ページも解析し、スクラッチコードの記述と保守の手作業を軽減します。ping スクリプト。

AIは、コンピュータビジョンと自然言語処理を使用して、固定セレクタがなくてもページ上の表、価格、テキストを認識します。このインテリジェントなtraction はスクラッチを作るping ウェブサイトの構造変更に対する耐性が高い。