VBAWebスクレイピング| Excel VBAを使用してWebサイトをスクラップする方法は?

Excel VBAWebスクレイピング

VBA Webスクレイピングは、Webページにアクセスし、そのWebサイトからコンピューターファイルにデータをダウンロードする手法です。Internet Explorerなどの外部アプリケーションにアクセスすることで、Webスクレイピングが可能です。これは、アーリーバインディングとレイトバインディングの2つの方法で実行できます。

VBAを使用したWebスクレイピングとは、VBAを使用してWeb上の他のソースからデータをフェッチする場合、データソースへのログインが必要になる場合がありますが、そのためには、のツールセクションからの参照を有効にする必要があります。 VBAからWebにアクセスするためのMicrosoftHTMLライブラリのVBAエディタ。

私たちの多くは、ExcelからWebページにアクセスし、それらのWebページからデータを取得できることを知っています。はい、あなたはそれを正しく聞いた。Webページをスクレイプしたり、ブラウジングアプリケーションにアクセスしたりすることができます。この記事では、Webスクレイピング用のExcelVBAコードを作成する方法について詳しく説明します。

通常、Webページを開き、データをコピーして、Excel、Word、その他のファイルなどのファイルに貼り付けます。しかし、この記事では、ExcelからWebサイトにアクセスする方法や、他の多くの種類のことを行う方法を紹介します。

VBAを使用してWebサイトデータをスクラップする方法は?

このVBAWebスクレイピングExcelテンプレートはここからダウンロードできます– VBAWebスクレイピングExcelテンプレート

Excelから他のアプリケーションにアクセスする場合は、「アーリーバインディング」と「レイトバインディング」などの方法でアクセスできます。初心者の段階では、「アーリーバインディング」テクニックを使用するのが常に安全です。

Webサイトにアクセスするには、「InternetExplorer」などのブラウジングアプリケーションが必要です。これは外部オブジェクトであるため、最初に参照を設定する必要があります。

以下の手順に従って、Webスクラップを作成します。

手順1: VBA変数を定義し、データ型を「InternetExplorer」として割り当てます。

コード:

 Sub Web_Scraping()Dim Internet_Explorer As internet End Sub 

上記のように、Internet Explorerへの参照を設定しようとすると、「Internet Explorer」が表示されません。これは、「Internet Explorer」が外部オブジェクトであるため、参照を設定する必要があるためです。

ステップ2:参照を設定するには、「ツール」に移動し、「参照」を選択します。

下のウィンドウで下にスクロールし、「MicrosoftInternetControls」を選択します。

手順3: [Microsoft Internet Controls]のチェックボックスをオンにして、[OK]をクリックします。これで、このオブジェクト名がIntelliSenseリストに表示されます。

コード:

 Sub Web_Scraping()Dim Internet_Explorer As inter End Sub 

ステップ4:「InternetExplorer」を選択します。

コード:

 Sub Web_Scraping()Dim Internet_Explorer As InternetExplorer End Sub 

手順5:次に、InternetExplorerを有効にするための参照を設定する必要があります。これはオブジェクト変数であるため、「Set」キーワードを使用して参照を設定する必要があります。

コード:

 Sub Web_Scraping()Dim Internet_Explorer As InternetExplorer Set Internet_Explorer = New InternetExplorer End Sub 

ステップ6:変数「Internet_Explorer」を使用して、InternetExplorerのプロパティとメソッドを使用できます。

変数名を入力し、ドットを入力してIntelliSenseリストを表示します。

コード:

Sub Web_Scraping()Dim Internet_Explorer As InternetExplorer Set Internet_Explorer = New InternetExplorerInternet_Explorer。エンドサブ

ステップ7: Internet Explorerアプリケーションを表示するには、「Visible」プロパティを選択し、ステータスを「True」に設定する必要があります。

コード:

 Sub Web_Scraping()Dim Internet_Explorer As InternetExplorer Set Internet_Explorer = New InternetExplorer Internet_Explorer.Visible = True End Sub 

コードを実行すると、コンピューターでInternetExplorerが開きます。

ステップ8: Webアドレスが言及されていないため、空白のページしか表示されません。Internet ExplorerにWebアドレスを与えるには、「ナビゲーション」メソッドを使用する必要があります。

コード:

 Sub Web_Scraping()Dim Internet_Explorer As InternetExplorer Set Internet_Explorer = New InternetExplorer Internet_Explorer.Visible = True Internet_Explorer.Navigate(End Sub 

ステップ9:上記の「ナビゲーション」メソッドで、InternetExplorerでナビゲートするURLを尋ねます。次に、ウェブサイト「Wallstreetnmojo」を開く必要があります。次のようにURLアドレスを指定できます。「//www.wallstreetmojo.com/」

コード:

 Sub Web_Scraping() Dim Internet_Explorer As InternetExplorer Set Internet_Explorer = New InternetExplorer Internet_Explorer.Visible = True Internet_Explorer.Navigate ("//www.wallstreetmojo.com") End Sub 

Now run the code, we should see the mentioned web address page in internet explorer.

Here we have a problem that once the web page is opened our code needs to wait until the page web page fully opened.

Step 10: We need to use the “Do While” loop in VBA to actually wait for our code to go any further until the mentioned page is fully loaded.

So, add below the “Do While” loop to force the macro to wait until the mentioned web page comes to the “Ready State Complete” mode.

Code:

 Sub Web_Scraping() Dim Internet_Explorer As InternetExplorer Set Internet_Explorer = New InternetExplorer Internet_Explorer.Visible = True Internet_Explorer.Navigate ("//www.wallstreetmojo.com") Do While Internet_Explorer.ReadyState  READYSTATE_COMPLETE: Loop End Sub 

Step 11: Now let’s try to get information about the website in a single line. To get the information about the mentioned web address information we need to use the “Location Name” property.

Code:

 Sub Web_Scraping() Dim Internet_Explorer As InternetExplorer Set Internet_Explorer = New InternetExplorer Internet_Explorer.Visible = True Internet_Explorer.Navigate ("//www.wallstreetmojo.com") Do While Internet_Explorer.ReadyState  READYSTATE_COMPLETE: Loop MsgBox Internet_Explorer.LocationName End Sub 

Run the code and in the message box, we would get the information about the website.

Step 12: Now at the bottom, we can also print website addresses as well.

Code:

 Sub Web_Scraping() Dim Internet_Explorer As InternetExplorer Set Internet_Explorer = New InternetExplorer Internet_Explorer.Visible = True Internet_Explorer.Navigate ("//www.wallstreetmojo.com") Do While Internet_Explorer.ReadyState  READYSTATE_COMPLETE: Loop MsgBox Internet_Explorer.LocationName & vbNewLine & vbNewLine & Internet_Explorer.LocationURL End Sub 

Now this will tell about the website description and also shows the website address as well.

Things to Remember here

  • Web scraping is possible by accessing external applications like Internet Explorer.
  • We can do it in two ways i.e. Early Binding & Late Binding. With Early Binding, we can get to see the IntelliSense list but with late binding, we cannot get to see the IntelliSense list at all.