EXCEL VBA Google Chrome(グーグルクローム)の操作・webスクレイピング・情報取得(Seleniumの設定・準備)
EXCEL VBA Google Chrome(グーグルクローム)の操作・webスクレイピング・情報取得(Seleniumの設定・準備)
今回説明するのは、EXCEL VBAとGoogleChrome(クローム)を利用してWebサイトから情報取得する方法の説明をいたします。 Internet Explorer(インターネットエクスプローラー)からWebサイトの情報を取得する事前設定は、VBEの参照設定を追加する事で利用できますが、Chromeの場合は、SeleniumBasicをダウンロード及びインストールしてVBEの参照設定を有効にする事で利用できます。日本国内のWebブラウザのシェアでは、InternetExplorerとGoogle Chromeでは、IEの約1割弱に対してクロームは、約4割占めています。また、IEの場合は、マイクロソフト側でもEdgeへの乗り換えを推奨している事から、今後、Webブラウザから情報を取得する際は、クロームからもWebサイト情報を取得出来るように、していただいた方が良いでしょう。それでは、SeleniumBasic事前設定と簡単な操作方法をサンプルプログラムを交えて順番に説明いたします。
●【EXCEL VBAとInternetExplorerの組み合わせで情報を取得する際は、下記を参照して下さい】
EXCEL VBAでGoogleChromeからWeb情報を取得する際の事前設定(必須)
① SeleniumBasicのインストール
(下記のURLへアクセスします。)
http://florentbr.github.io/SeleniumBasic/
② SeleniumBasicのサイトが表示されたらDownLoad「Release Page」をクリックします。③ SeleniumBasicV2.0.9.0.exeクリックしてダウンロードします。
④ SeleniumBasicV2.0.9.0.exeダウンロード後、クリックしてインストールを実行します。「Next」をクリックします。
⑤ 「Setup-SeleniumBasic」の画面が表示されますので、ラインセンス契約に同意します。「Next」をクリックします。
⑥ 「Select Components」の画面が表示されるので、「既定値」のまま「Next」をクリックします。
⑦ 「Setup-SeleniumBasic」の画面が表示されるので、「Install」をクリックしてインストールを開始します。
⑧ 「SeleniumBasic」のインストールが完了しました。
⑨ Google ChromeDriverをインストールする。パソコンにインストールされているChromeのバージョンに合わせて「chromedriver」をダウンロードします。
まず、GoogleChromeのバージョンを確認します。
・GoogleChromeを立ち上げ、右上の【三点リーダー】クリック⇒【ヘルプ】⇒【Google Chromeについて(G)】を選択します。
⑩ 【Google Chromeについて】を選択しますと下記の通りに、現在利用している。バージョン情報が表示されます。
⑪ 下記のURLより、Google ChromeDriverをインストールする。パソコンにインストールされているChromeのバージョンに合わせて「chromedriver」をダウンロードします。(Chromeのバージョンが86.0の場合は、Chromedriverもバージョン86.0を選択します。)
http://chromedriver.chromium.org/downloads
⑫ 同じChromeのバージョンを選択したら、WindowsOSの場合は、「Chromedriver」を選択してダウンロードします。
⑬ ChromedriverWin32.zipを解凍して、SeleniumBasicのインストールフォルダーにファイルを差し替えます。
※Windows10 でインストールした場合は、下記のパスに「SeleniumBasic」フォルダーがあります。
C:\Users\ユーザー\AppData\Local\SeleniumBasic
⑭ SeleniumBasicフォルダーにChromedriver.exeファイルを差し替えます。
※ 一度パソコンを再起動します。
⑮ VBEの参照設定を行う【VBEの画面より】【ツール】⇒【参照設定】を選択して【Selenium Type Library】にチェックを入れます。
⑯ 以上で、GoogleChromeからWeb情報を取得する際の事前設定が終了しました。
SeleniumBasicでのオートメーションエラーが発生した場合の対処方法
上記の設定にて、GoogleChromeからWeb情報を取得する際の事前設定が終了しましたが、プログラムを実行すると下記の【実行時エラー】オートメーションエラーが発生する場合は、下記の通りに対処します。
①実行時エラー・オートメーションエラーが発生した場合
② SeleniumBasicは.NET Framework 3.5のランタイムが必要なため、MicrosoftのHPからファイルをインストールする必要があります。インストール手順は、下記を参照してください。
【下記のURLからダウンロード⇒インストールします。ダウンロードボタンをクリックします。】
https://www.microsoft.com/ja-jp/download/details.aspx?id=21
③ 【Windows機能】の画面に切り替わるので、「この機能をダウンロードしてインストールする」を選択します。
④ 必要なファイルのダウンロードが始まります。
⑤ 下記の通りに【次の機能のインストールに成功しました】のメッセージで、.NET Framework 3.5のインストールが完了いたしました。インストール後、パソコンを再起動をして下さい。
EXCEL VBAでGoogleChrome(グーグルクローム)を利用してWebサイトを表示します。(Yahoo!Japan)
下記のサンプルプログラムは、EXCEL VBAでグーグルクロームを利用して指定したWebサイトを表示するサンプルプログラムです。
今回は、「Yahoo!JAPAN」のWebサイトを指定して表示します。
【プログラム実行手順】
① GoogleChromeを起動します。
② 起動したGoogleChromeに対して「Yahoo!JAPAN」のWebサイトを開きます。
③ Webサイトが開いたら、メッセージボックスで、「Yahoo!JAPANが表示しました」表示します。
④ メッセージボックスの「OK」ボタンクリックで、GoogleChromeが閉じます。
【プログラム実行条件】
・SeleniumBasicの設定済み(インストール)
・ChromeDriverの設定済み(インストール)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
' '******** AKIRA55.COM ******* https://akira55.com/seleniumbasic_googlechrome/ ' Sub SeleniumBasic01() 'EXCEL VBAでクロームブラウザで指定サイトを表示します。 Dim Driver As New Selenium.WebDriver Driver.Start "chrome" 'クロームブラウザを立ち上げます。 Driver.Get "https://www.yahoo.co.jp/" 'Yahoo!サイトを開きます。 MsgBox "Yahoo Japanが表示しました" End Sub ' |
(画面クリックして拡大)
EXCEL VBAでGoogleChrome(グーグルクローム)を利用してYahoo!Japanサイトを表示して、キーワードを自動入力して検索結果を表示します。
下記のサンプルプログラムは、EXCEL VBAでグーグルクロームを利用してYahoo!JAPANサイトを表示して、キーワード欄へ指定したキーワードを自動入力して検索結果を表示します。
今回は、検索キーワードとして「JAPAN」を指定して検索の結果内容を表示します。
【プログラム実行手順】
① GoogleChromeを起動します。
② 起動したGoogleChromeに対して「Yahoo!JAPAN」のWebサイトを開きます。
③ Webサイト「Yahoo!JAPAN」が表示されたら検索窓に「Japan」が自動入力されます。
④ 検索ボタンが自動に押されて、検索結果が表示されます。
⑤ メッセージボックスが表示されて「OK」ボタンクリックで、GoogleChromeが閉じます。
【プログラム実行条件】
・SeleniumBasicの設定済み(インストール)
・ChromeDriverの設定済み(インストール)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
' '******** AKIRA55.COM ******* https://akira55.com/seleniumbasic_googlechrome/ ' Sub SeleniumBasic02() 'EXCEL VBAでクロームでWebサイト「Yahoo!JAPAN」を開きキーワード(Japan)を入力し検索を表示します。 Dim Driver As New Selenium.WebDriver With Driver .Start "chrome"'グーグルクロームを立ち上げます。 .Get "https://www.yahoo.co.jp/"'Yahoo!JAPANを開きます。 .FindElementByName("p").SendKeys "JAPAN"'検索キーワードに”JAPAN”を入力します。 .FindElementByName("sf1").Submit '検索ボタンをクリックします。 End With MsgBox "Yahoo検索を実行しました" End Sub ' |
(画面クリックして拡大)
EXCEL VBAでGoogleChrome(グーグルクローム)を利用してYahoo!Japanのニュースサイトより、ニュース8項目を自動的に情報を取得します。
下記のサンプルプログラムは、EXCEL VBAでグーグルクロームを利用してYahoo!JAPANのニュースサイトからニュース項目8件分をEXCELシートに表示します。自動的にWebサイトから情報を収集する際には、とても便利だと思います。
【プログラム実行手順】
① GoogleChromeを起動します。
② 起動したGoogleChromeに対して「Yahoo!JAPAN」のWebサイトを開きます。
③ 「Yahoo!JAPAN」のトップページから「Yahoo!ニュース」ページに移動します。
④ 「Yahoo!ニュース」サイトからニュース項目を取得します。
⑤ 取得したニュース項目をEXCELシートに転記します。
【プログラム実行条件】
・SeleniumBasicの設定済み(インストール)
・ChromeDriverの設定済み(インストール)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
' '******** AKIRA55.COM ******* https://akira55.com/seleniumbasic_googlechrome/ ' Sub SeleniumBasic03() 'Yahooニュースサイトより、ニュース項目を取得します。 Dim Driver As New Selenium.WebDriver Dim Webtxt As String Dim I As Long Driver.Start "chrome" 'グーグルクロームを立ち上げます。 Driver.Get "https://www.yahoo.co.jp/" 'Yahoo!JAPANを開きます。 Driver.FindElementByCss("#tabTopics1").Click 'Yahoo!ニュースサイトをクリック For I = 1 To 8 'ニュース項目の8件分を取得します(繰り返す) Webtxt = Driver.FindElementByCss("#contentsWrap > section.topics > div > div > div > ul > li:nth-child(" & I & ")").Text 'Webサイトより、ニュース項目を1件ずつ取得します。 Cells(I + 1, "A") = I & "." & Webtxt '取得してニュース項目をEXCELシートに転記します。 Next I Driver.Close Set Driver = Nothing End Sub ' |
(画面クリックして拡大)
また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。