Excel VBA

Excel VBAでスクレイピングを実施する方法|手順から注意点まで徹底解説

業務で必要なデータを効率よく収集したいと考えたとき、スクレイピングは強力な手段です。

特に、普段使い慣れているExcelで実現できるなら、導入のハードルも低くなります。Excel VBAを使えば、Webページの情報を自動で取得し、シートにまとめることが可能です。しかし、便利な反面、法的リスクや技術的な制約も存在します。

本記事では、VBAによるスクレイピングの仕組みや手順、サンプルコード、さらに注意点や代替手段まで徹底解説します。

Excel VBAでスクレイピングは可能?

Excel VBAを使ったスクレイピングは、比較的簡単にWebページからデータを取得できる方法として注目されています。特に、日常業務でExcelを使用している担当者にとって、追加のツールを導入せずに始められる点は大きな魅力です。

ただし、小規模かつ定型的な情報収集に限定されるため、用途やリスクを理解したうえで導入することが重要です。

スクレイピングとは

スクレイピングとは、Webサイト上の情報を自動で取得し、必要なデータを抽出する技術です。営業リストの作成や競合調査、価格情報の収集など、幅広い業務で活用されています。

本格的なスクレイピングはPythonなどでシステムを構築して実施されますが、Excel VBAでもHTTPリクエストを送信し、HTMLソースを解析することで簡易的なスクレイピングが可能です。

「まずはお試しでスクレイピングをやってみたい」という方はVBAやGoogle Apps Script(GAS)の活用した簡易的なものから始めてみましょう。

GASでスクレイピングを実施する方法は、以下の記事で紹介しています。

GASを使ってWebスクレイピングを実行する手順を紹介。メリット・デメリットも

VBAによるスクレイピングのやり方

Excel VBAを使ったスクレイピングは、基本の流れを理解すれば初心者でも実践可能です。ここでは、以下のステップで「特定のWebページからデータを取得し、Excelシートに表示する」方法を紹介します。

  1. Excel上でスクレイピングライブラリを導入
  2. コードの入力
  3. VBAでスクレイピングを実行

お使いのExcelのバージョンや動作環境によっては表示が異なったり、スクレイピングを実行できない場合がありますので、予めご了承ください。

1.Excel上でスクレイピングライブラリを導入

まず、VBAでHTMLを解析するために「Microsoft HTML Object Library」と「Microsoft XML, v6.0」を有効化します。手順は以下の通りです。

  1. Excelで[Alt]+[F11]を押してVBAエディタを開く
  2. メニューの「ツール」→「参照設定」をクリック
  3. 「Microsoft HTML Object Library」と「Microsoft XML, v6.0」にチェックを入れる

この設定により、HTML文書を解析したりHTTP通信でWebページを取得することができます。

2.コードの入力

次に、Webページのデータを取得してExcelに書き込むコードを入力します。以下は「指定したURLのページタイトルをA列に表示する」シンプルな例です。

Option Explicit
Sub ScrapeTitle()    
   Dim http As Object, html As Object 
   Dim URL As String, titleText As String

   ‘取得したいWebページのURLを指定
   URL = “https://example.com/”   
   
 ’HTTP通信でページ取得
    Set http = CreateObject(“MSXML2.XMLHTTP”)
    http.Open “GET”, URL, False 
   http.Send   

    ‘HTML解析  
  Set html = CreateObject(“HTMLFILE”)
    html.body.innerHTML = http.responseText  

     ‘タイトルタグのテキストを取得
    titleText = html.getElementsByTagName(“title”)(0).innerText   

     ‘結果をExcelシートに出力 
   Sheets(1).Range(“A1”).Value = “ページタイトル” 
   Sheets(1).Range(“A2”).Value = titleText  

     MsgBox “スクレイピングが完了しました!”
End Sub

このコードは、指定したURLのHTMLを取得し、<title>タグの中身をExcelのシートに表示します。仕組みを理解すれば、CSSセレクタを使って他の要素を取得する応用も可能です。

3.VBAでスクレイピングを実行

コードを入力したら、[F5]キーでマクロを実行するだけです。取得結果がシートに表示されれば成功です。

実際の業務で利用する場合は、URLを複数セルに並べてループ処理を行えば、複数ページのデータ収集もできます。実行する際は、対象サイトの利用規約やrobots.txtを確認し、アクセス過多にならないようにディレイを入れるなど、マナーと法令順守を徹底してください。

安全にスクレイピングを実施する方法に関しては、以下の記事をご覧ください。

スクレイピングは違法?安全に実施するための対策とおすすめサービスを紹介

VBAによるスクレイピングのメリット

VBAを利用する最大の利点は、追加システムの導入や高額なツール購入が不要で、Excel環境だけで始められる点です。

普段の業務で使い慣れたExcel上で作業できるため、新しいソフトの習得コストを削減できます。また、取得したデータをそのままExcelシートに整形・集計でき、簡易的な分析やレポート作成まで一連の流れを完結できる点も魅力です。

小規模で定型的な情報収集なら、初期投資を抑えつつ迅速に導入できるため、試験的なスクレイピングの第一歩として最適です。

VBAによるスクレイピングのデメリット・注意点

VBAでのスクレイピングは導入しやすい一方で、いくつかの制約やリスクが存在します。以下のデメリットや注意点を理解し、業務に支障をきたさないよう注意しましょう。

  • Excelのバージョン変更によって動作しない場合がある
  • 全てのデータを取得できるわけではない
  • スクレイピングの処理スピードがやや遅い
  • スクレイピングのルールや法的リスクに注意

Excelのバージョン変更によって動作しない場合がある

VBAはExcelのバージョン依存性が高く、新しいバージョンへのアップデートやOSの変更でコードが正常に動作しなくなるケースがあります。

特に参照設定やActiveXコンポーネントを使用する場合、環境差異によるエラー発生リスクが高まります。

全てのデータを取得できるわけではない

VBAは静的なHTMLデータの取得に向いていますが、JavaScriptで生成される動的コンテンツやログインが必要なページからのデータ収集は基本的に困難です。

これらを扱う場合は、より高度なスクレイピングツールやヘッドレスブラウザが必要になります。

スクレイピングの処理スピードがやや遅い

VBAはマルチスレッド処理に対応していないため、データ取得は1件ずつの直列実行となり、大量のページを処理する場合は時間がかかります。

タイムアウト対策や待機処理を適切に設定することで安定性は確保できますが、速度面では専用ツールに劣ります。

スクレイピングのルールや法的リスクに注意

対象サイトの利用規約やrobots.txtを確認せずにスクレイピングを行うと、規約違反や法令違反となる恐れがあります。

特に個人情報や著作物を扱う場合は注意が必要です。企業で利用する場合は、必ずガイドラインを遵守し、法的リスクを回避する体制を整えましょう。

スクレイピングで安全・確実・効率的なデータ収集をするには

VBAやGoogle Apps Scriptを使ったスクレイピングは手軽に始められる一方、法的リスクやメンテナンス負担、大規模データの取得には不向きです。企業で継続的に運用する場合、こうした簡易的な方法では安定性や拡張性に限界があります。また、サイト構造の変更やアクセス制御に対応するには専門知識が不可欠です。

そのため、重要な業務での活用や大量データ収集を目的とする場合は、スクレイピングに精通したシステム開発のプロフェッショナルに依頼することをおすすめします。安全性と効率性を両立させ、長期的に運用できる仕組みを整えることが、業務改善の成功につながります。

クローラー開発の実績がある「シルク・ラボラトリ」へのお問い合わせはこちらから

スクレイピングは「シルク・ラボラトリ」にご相談ください

シルク・ラボラトリ

継続的で高精度なデータ収集を実現するには、専門性と運用体制が欠かせません。「シルク・ラボラトリ」では、企業ごとの要件に合わせたオーダーメイド型のスクレイピングサービスを提供し、安全かつ効率的な仕組みづくりをサポートします。

「シルク・クローラー」の強み

「シルククローラー」は、シルク・ラボラトリが自社開発した高性能なWebクローラーです。特定のキーワードや要素に基づいて、複数サイトを自動で巡回・解析し、必要なデータだけを抽出して納品形式に整えることが可能です。業種や要望に沿って柔軟にカスタマイズができるため、多様な業界で導入されています。

大規模かつ継続的なクローリングにも対応しており、常に最新情報をタイムリーに収集したい企業にとって最適なソリューションとなっています。

まとめ

Excel VBAを活用したスクレイピングは、試験的な導入や小規模データ収集に適していますが、法的リスクやメンテナンス性、大規模対応には限界があります。安定した運用や高精度な情報取得を実現するなら、プロフェッショナルへの依頼が最適です。

「シルク・ラボラトリ」では、安全性と効率性を両立したスクレイピングソリューションを提供しています。まずはお気軽にご相談ください。

お問い合わせ