Excel VBAを使って、大量のWebページのスクリーンショットをとる方法です。5分でできますよ!
ウェブブラウザをコントロールできるSeleniumを使います。VBAで使えるSeleniumBasicというのがあるので下記ページからダウンロードしてインストールします。
Seleniumbasic
コードは以下になります。ExcelのVBAで参照設定から”Selenium Type Library”にチェックを付けておきます。実行するとSheet1のシート上の、セルのA列にURLが順に記入されている状態で、すべてのURLのスクリーンショットを任意のフォルダに保存します。
Sub takeScreenShot()
Dim driver As FirefoxDriver
Dim i As Long
Dim destURL As String
Dim flag As Boolean
Dim imageFileName As String
Set driver = New FirefoxDriver
Call driver.Start
driver.Timeouts.ImplicitWait = 10000 'Seleniumの読み込み待機時間
'driver.Window.Maximize
driver.baseUrl = "www.google.co.jp"
With ThisWorkbook.Worksheets("Sheet1")
For i = 1 To .Cells(1, 1).End(xlDown).Row
If .Cells(i, 1) = "" Then
Else
If InStr(.Cells(i, 1), "//") = 0 Then
destURL = "//" & .Cells(i, 1)
Else
destURL = .Cells(i, 1)
End If
flag = driver.Get(destURL)
If Not flag Then
MsgBox (.Cells(i, 1).Value & "のページの読み込みに失敗しました。")
End If
imageFileName = Replace(.Cells(i, 1).Value, "/", "_") 'URLにスラッシュが入るとフォルダごとに分けられるので、アンダーバーに置換
'スラッシュごとにフォルダに分けたい場合は、次行のimageFileName を.cells(i, 1).Valueに置き換え
driver.TakeScreenshot.SaveAs "C:\Users\user\Documents\pages" & imageFileName & ".jpg"
End If
Next
End With
driver.Close
End Sub
seleniumBasicで、firefoxで指定のページへアクセスし、
ページ内容をクリップボードにコピーし、指定のセルにペーストとしたいのですが
どのようにコードを作成すれば好いでしょうか・・・?
ご教授願えないでしょうか。
ページ内のどの要素を取得し、どのような規則で貼り付けるかによりますが、ざっくりと説明しますと、
という流れでできます。
例えば、「idがtable1のテーブルを一旦取得し、For文でテーブル内の要素のTRやTD要素を、一つずつ順番にセルに入れていく」といった処理ができます。
このあたりコードも短く書けませんので、ざっくりした説明となりますが参考になれば幸いです。