logo
languageJPdown
menu

【初心者向け】Excel (エクセル)VBAを使ってWebスクレイピングを実践する方法を解説!

約6分で読めます

スクレイピングとは、Webページ上のHTMLコードから、特定の情報やデータを抽出するコンピューター技術を指します。一言でいえば、Webページ上のデータを自動収集する技術のことです。

一般的にスクレイピングを行うには、Python、Ruby、JAVA、PHPなどのプログラミング言語が用いられますが、プログラミング経験のない非エンジニアがイチから技術を習得することは容易ではありません。

そのような方にでも、かんたんにスクレイピングを実践できる方法としておすすめなのが、Excel VBAの活用です。本記事では、Excel VBAを使ったスクレイピングのやり方を手順に沿ってわかりやすく解説しますので、ぜひ参考にしてください。

エクセルVBAとは

Excel VBA(Visual Basic for Applications)は、Microsoft Excel内で使用できるプログラミング言語です。この言語は、Excelの機能を自動化し、カスタマイズするために設計されています。VBAは、Visual Basicというプログラミング言語に基づいており、これを使うことで、単純なタスクの自動化から複雑なデータ処理まで、様々な作業を効率化できます。

例えば、大量のデータを処理して報告書を作成する際、VBAを用いてデータの抽出、整形、分析を自動化し、時間を大幅に節約することが可能です。また、ユーザー定義関数を作成して、特定の計算を簡単に行うこともできます。これらの機能により、Excel VBAは、ビジネスや研究の分野で広く利用されています。

エクセルVBAでスクレイピングを行うメリット

Excel VBAを使用したWebスクレイピングには複数のメリットがあります。特に、Excelが主要な作業ツールである業務においては、その価値は計り知れません。ここでは、主なメリットを3つ紹介します。

開発環境の構築が不要

Excel VBAを使用する最大のメリットは、イチから開発環境を構築する必要がないことです。VBAはExcelに組み込まれているため、特別なソフトウェアやツールをインストールせずとも、すぐに利用を開始できます。

したがってプログラミングに不慣れなユーザーや、迅速に作業を開始したいユーザーにとって大きなメリットといえます。

取得したデータをエクセルシートに直接保存できる

Webスクレイピングで取得したデータをExcelシートに直接保存できるのは、データ分析やレポート作成を行う際に非常に便利です。外部のデータベースやファイル形式にデータをエクスポートし、それをExcelにインポートする手間が省けます。これにより、データの取り扱いが簡単になり、作業の効率が向上します。

直接にエクセルシートでセルを設定できる

VBAを使用すると、スクレイピングしたデータをExcelのセルに直接配置したり、特定の形式で整理したりすることができます。これにより、データの後処理や整形が容易になり、さらにExcelの便利な機能(ピボットテーブル、グラフ作成、数式計算など)を直接活用できるため、データ分析のプロセスが大幅にスムーズになります。

エクセルVBAを使ってスクレイピングを行う手順

ここからは、実際にExcel VBAを使って、Webサイトから情報やデータをExcelシートに取り込む手順を解説します。

STEP1.エクセルでスクレイピングライブラリを導入する

まずは、Excelのマクロに対してスクレイピングライブラリを導入します。以下の手順に沿って進めていきましょう。

  • 新しいExcelスプレッドシートを開いてください。
  • 「Alt+F11」を押すと、「Visual Basic」が開きます。
  • 「挿入」をクリックして、「標準モジュール」を選択します。
  • 新しいモジュール内に、下記のコードを入力します。

Sub test()

End sub

  • 「ツール」をクリックして、「参照設定」をクリックします。
  • 参照可能なライブラリファイルの一覧から、以下の2項目にチェックを入れます。

Microsoft HTML Object Library
Microsoft Internet Controls

こちらで、Excel VBAを使ったスクレイピングの準備が完了です。

STEP2.コードを入力する

Excel VBAを使用したWebスクレイピングの基本的なサンプルコードを紹介します。このコードは、特定のウェブページからデータを取得し、それをExcelシートに転記するというものです。

<サンプルコード>

Sub test()

    Dim ie As Object

    Dim htmlDoc As Object

    Dim htmlElement As Object

    Dim i As Integer

    ‘ Internet Explorerのインスタンスを作成

    Set ie = CreateObject(“InternetExplorer.Application”)

    ‘ スクレイピングしたいウェブページを開く(例:Example.com)

    ie.navigate “http://www.example.com”

    ie.Visible = False

    ‘ ページが完全に読み込まれるまで待機

    Do While ie.readyState <> READYSTATE_COMPLETE

        Application.Wait DateAdd(“s”, 1, Now)

    Loop

    ‘ HTMLドキュメントを取得

    Set htmlDoc = ie.document

    ‘ HTMLドキュメントから特定の要素を取得(例:タグ名が”h1″のもの)

    Set htmlElement = htmlDoc.getElementsByTagName(“h1”)

    ‘ 取得した要素をExcelシートに転記

    For i = 0 To htmlElement.Length – 1

        Sheets(“Sheet1”).Cells(i + 1, 1).Value = htmlElement.Item(i).innerText

    Next i

    ‘ IEを閉じる

    ie.Quit

    Set ie = Nothing

End Sub

※注意点

  • このコードはあくまで基本的な例です。実際のウェブページの構造に応じて適宜修正が必要です。
  •  サンプルコード内の「 ie.navigate “http://www.example.com”」を情報収集したいウェブページのURLに変更してください。
  • ターゲットのウェブページや取得するデータによっては、異なるHTML要素や属性を指定する必要があります。

STEP3.VBAでスクレイピングを実行する

モジュールにコードを入力し、「Sub/ユーザーフォームの実行」ボタンを押すたびに、指定したURLが表示され、ウェブページ上のデータを自動的にExcelに転記します。

Internet Explorer以外のブラウザでも可能か?

Internet Explorerは既にサポートが終了されているため、他のブラウザで試したいと考える方も多いでしょう。しかしながら、Excel VBAでは直接他のブラウザ(例えば、Google Chrome、Mozilla Firefoxなど)を操作することはネイティブではサポートされていません。代替手段として以下の方法があります。

Selenium WebDriverを使用する

SeleniumはWebブラウザの自動化に広く使用されるツールで、Google ChromeやMozilla Firefoxなど、さまざまなブラウザをサポートしています。Excel VBAとSeleniumを組み合わせることで、IE以外のブラウザでのスクレイピングが可能になります。

ただし、この方法ではSelenium WebDriverの設定と、VBAからSeleniumを操作するための追加の設定が必要です。

IEモードを使用する

Microsoft Edgeの新しいバージョンでは、IEモードと呼ばれる機能を使って、古いIE依存のWebページやアプリケーションを動かすことができます。EdgeのIEモードは、既存のIEベースのVBAスクリプトを引き続き利用する一時的な解決策として機能する可能性があります。

APIを利用する

Webスクレイピングの代わりに、対象のウェブサイトがAPIを提供している場合は、APIを介してデータを取得することも検討できます。Excel VBAは、HTTPリクエストを送信してAPIからデータを取得することが可能です。

他のプログラミング言語の使用する

より高度なスクレイピングが必要な場合、PythonやJavaScriptなど他のプログラミング言語を使用することを検討することも一つの選択肢です。これらの言語は、Webスクレイピングに特化した強力なライブラリを持っており、VBAよりも柔軟性が高いです。

これらの代替方法を検討する際には、追加の設定や学習が必要になることもあるため、目的やリソースに応じて適切な方法を選択することが重要です。

Octoparseでスクレイピングする方法

プログラミングの知識がなく、VBAも上手く使いこなせる自信がない方は、スクレイピングツールのOctoparse(オクトパス)の活用をおすすめします。

Octoparseは「自動識別」機能が備わっているため、データを取得したいウェブページのURLを入力するだけで、Webページ上の項目を自動的に検出し、スクレイピングタスクを自動的に生成します。

ここでは、Octoparseを使ったスクレイピングの手順を解説します。

1. Octoparseを起動して、スクレイピングしたいWebページのURLを入力します。

ここでは、OctoparseブログのURLを入力し、「スタート」 ボタンをクリックしてください。

2. Octoparseでページが読み込みされたら、自動的にページ上の内容を識別します。
自動識別機能は、自動的にページ上の必要なデータを検出して識別してくれる便利な機能です。特別な設定は不要で、Octoparseが自動的に処理します。

3. 識別が完了すると、データプレビュー内に識別されたデータが表示されます。確認後、「操作提案」から「ワークフローの生成」を押します。

4. Webクローラーの作成が完了しました。画面右上の「実行」ボタンをクリックすれば、すぐデータ抽出が開始されます。

5.わずか数分でデータ抽出が完了しました。抽出したデータは、Excelやcsvなどにエクスポートできます。

6.エクスポートしたデータは自由に加工できます。

こちらはExcelにエクスポートしたデータです。Octoparseブログに掲載されている記事のURL、タイトル、カテゴリ、執筆者名などがまとめられています。

ここまでの作業で行ったのは、URLを貼り付けたことと、わずか数回のクリック操作のみです。

まとめ

本記事では、プログラミングの知識を持たない、IT初心者でも簡単にスクレイピングができる方法を紹介しました。Excel VBAを使えばスクレイピングを簡単にできますが、複雑な構造を持つWebサイト(例えば、JavaScriptやAJAXを使っている動的なサイトなど)では、VBAの機能はやや不足する可能性があります。


しかしながら、イチからプログラミング言語とIT知識を勉強するのはかなりの労力が掛かります。手軽にスクレイピングをしたい方にとって、Octoparseのようなスクレイピングツールの活用は最適です。

人気記事

トピックを検索する

今すぐOctoparseを始めて、業務効率化を実現しましょう。

ダウンロード

関連記事