Headless?Selenium?こちらの説明は割愛させて頂き、
ExcelVBAからブラウザを立ち上げないで、操作してみよう的な感じです.
こちらのサンプルではyahoo!ファイナンスからデータを取得して、
シートに内容を書き出しています。
※動作させるのにSeleniumBasicのダウンロードが必要となります。
##Excelで動作させるための準備
####1. 下記サイトからSeleniumBasic-2.0.9.0.exeをダウンロード
https://github.com/florentbr/SeleniumBasic/releases/tag/v2.0.9.0
####2. chromedriver2.33をダウンロード
VBAのエラーが起きてしまうので、chromedriver2.33を別途ダウンロード(上記に含まれているchormedriverが古い?)
https://sites.google.com/a/chromium.org/chromedriver/downloads
ダウンロードしたzipからchromedriver.exeを1.があるフォルダにコピー
(以前のファイルは念のため、保存しておいたほうがいいかと思われます。)
####3. ExcelVBAの参照設定
ExcelVBAのメニューから「ツール」-「参照設定」でライブラリを開き、「Selenium Type Library」にチェック入れ、OK
####4. Chromeのバージョン
Headlessを使用する場合、Chrome59以上
##VBAの記入
Dim driver As New Selenium.ChromeDriver
driver.AddArgument "headless"
driver.AddArgument "disable-gpu"
driver.AddArgument "window-size=1920,1080"
driver.Start
driver.Get ("http://stocks.finance.yahoo.co.jp/us/profile/AMZN")
driver.Wait 1000
Dim data1, data2, data3
data1 = driver.FindElementByCss("#globalDate > p > strong").Text
Worksheets("Sheet1").Cells(1, 1) = data1
data2 = driver.FindElementByCss("#main table.stocksTable").AsTable.Data
Worksheets("Sheet1").Cells(2, 1).Resize(UBound(data2, 1), UBound(data2, 2)).Value = data2
data3 = driver.FindElementByCss("#main table.boardFinCom").AsTable.Data
Worksheets("Sheet1").Cells(5, 1).Resize(UBound(data3, 1), UBound(data3, 2)).Value = data3
driver.Close
ブラウザを開いて操作感を出したい時や、もしくはどういう操作をやっているかを確認したいなら、下記コードをコメントにするとChromeが表示されます。
(Headlessの意味がなくなってしまいますが・・・)
driver.AddArgument "headless"
driver.AddArgument "disable-gpu"
driver.AddArgument "window-size=1920,1080"
##終わりに
-
いくつものURLを手動で取得しているなら、データ収集の効率化が図れると思います。
-
本当はPDFファイルもVBAから操作したいのですが、ハードルが高いようなので、勉強中です・・・