WebBrowser×VBA×配列でスピードアップ【WebBrowser × ExcelVBA】
WebBrowserでデータを取得し、セルに順番に入れていたものを配列に一旦入れた後シートに入れる形に変更したVer
実際に使用したサンプルコード
Option Explicit
Option Base 1
Public Sub sample()
Dim 開始時間 As Single
Application.ScreenUpdating = False
開始時間 = Timer
'ユーザーフォームを読み込む
Load UserForm1
With UserForm1.WebBrowser1
'スクリプトエラーの抑止
.Silent = True
'URLを指定して接続
.Navigate "https://vba.company/samplepage/4/"
'接続待機
Do While .Busy Or .ReadyState <> READYSTATE_COMPLETE
DoEvents 'OSに制御を渡す
Loop
'ドキュメントをセット
Dim htmldoc As HTMLDocument
Set htmldoc = .Document
Dim 行サイズ As Long
Dim 列サイズ As Long
'行サイズを取得
行サイズ = htmldoc.getElementsByTagName("tr").Length
'列サイズ
Dim tr要素 As HTMLTableRow
Set tr要素 = htmldoc.getElementsByTagName("tr")(0)
列サイズ = tr要素.getElementsByTagName("td").Length
Dim 変数 As HTMLTableCell
Dim 行 As Long: 行 = 1
Dim 列 As Long: 列 = 1
'配列にデータを順番に入れる
For Each 変数 In htmldoc.getElementsByTagName("td")
Worksheets("Data").Cells(行, 列) = 変数.innerText
列 = 列 + 1
If 列 > 列サイズ Then
列 = 1
行 = 行 + 1
End If
Next
End With
'ユーザーフォームの解放
Unload UserForm1
Dim 終了時間 As Single
終了時間 = Timer
MsgBox 終了時間 - 開始時間
End Sub