Web操作2(Chrome)


Chromeを使う方法

VBAからInternetExplorer(IE)を操作する方法を既に紹介しましたが、ここでは別のブラウザを使ったWeb操作の方法を見てみましょう。


IEの問題点とほかのブラウザを操作する必要性

現在、数多くのブラウザが存在しますがその中でもIEはもはや特殊なブラウザといってよいでしょう。

Windowsに標準搭載されているMicrosoft製のブラウザということで一時はメジャーなブラウザとなった時代もありましたが、ChromeやFirefoxといった優れたブラウザが現れ、徐々に勢いを失ってきました。

特に大きな問題としてはHTML5で必須の技術となっているjavascriptやCSSの一部に対するIE独自の解釈があり、Webサイトを作成する際にIEとそれ以外のブラウザでは別々の実装をする形(クロスブラウザ対応)で開発コストをかけざるを得ないということがWeb開発者の大きな負担となっていました。

MicrosoftでもWindows10では新しいブラウザであるEdgeを搭載しており、IEの開発は終了しています。

VBAからは引き続きIEを操作することができますが、すでに過去のブラウザであるIEのみに対応するためのコストを切り捨てたWebサイトも増えており、IEではそもそもjavascriptが正常に動作しないためページ自体がまともに表示されない(機能が利用できない)ようなケースも見られまし、Microsoft自身がIEを使い続けないことを推奨しているようです。

結論としてはVBAとIEを操作するだけでは現実的に不可能なことが多いため、VBAを使ってWeb操作をしたい場合IE以外のブラウザを操作する方法を知っておく必要があります。


Chromeを操作するための準備

現在の代表的なブラウザであるGoogle ChromeをVBAから操作するための準備をしていきましょう

IE以外のブラウザを使ってWeb操作する場合、それぞれのブラウザを扱うためのライブラリを用意する必要があります。

①まず、以下のサイトからSeleniumBasicをダウンロードしてください。

SeleniumBasicのダウンロードページ

SeleniumBasicのダウンロードページ

ダウンロードしたらexeファイルを実行し、SeleniumBasicをインストールします。

②次に、以下のサイトからChromeDriverをダウンロードしてください。

ChromeDriverのダウンロードページ

ChromeDriverのダウンロードページ

この時、自分で使っているGoogle Chromeのバージョンと同じものをダウンロードするようにしてください。

③ダウンロードしたchromedriver.exeを、SeleniumBasicをインストールしたフォルダ内のchromedriver.exeに上書きコピーします。

SeleniumBasicフォルダ

VBEのツール-参照設定からSelenium Type Livraryが設定できるようになっていますので、チェックを入れます。

chromedriverの参照設定

以上で、VBAからChromeを操作する準備は完了です。


Chromeを操作してコンテンツを取得する

上記の準備が済んだらあとはVBAからchromedriverを利用してChromeを起動し、Webサイトへのアクセス、要素の操作を実行することができます。

Public chrome As New ChromeDriver 'Crhomeドライバ
chrome.Get url 'urlを指定して初期ページを表示
chrome.Quit'chromeを終了する

基本的にはIEと同様にchrome.FindElementsByClass()やchrome.FindElementsById()でクラスを指定して要素を取得したり、chrome.FindElementsByXPath()を使ってHTMLの構造から取得したい要素をたどって指定したりすることでwebページへアクセスできます。

また、iframe(アイフレーム)の取り扱いが容易なのもchromedriverを使うメリットであり、chrome.SwitchToFrame()でiframeのIDを指定してiframe内のHTMLを簡単に取得(移動)し、chrome.SwitchToParentFrameで親フレームに戻ることができます。

特にIE上でしか動作しないような特別なサイトを除き、今後VBAからWeb操作をする必要があれば基本的にchromedriverを利用するようにした方がよいでしょう。