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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です