Excel VBA でウェブのHTMLソースを保存する

やりたい事

  • Excel VBA でウェブのHTMLソースを保存する。

下準備

エクセルを起動 → [alt] + [F11] → [ツール] → [参照設定] → 下記にチェックを入れる → [OK]

[Microsoft ActiveX Data Objects 6.1 Library]
にチェックを入れる

[ファイル] → [名前を付けて保存] → [Excel マクロ有効ブック (*.xlsm)] を選択 → 任意のファイル名を入力 → [保存]

VBA スクリプト

www.yahoo.co.jp を data.txtに保存するサンプル。

Sub web2()

Dim o As Object
Set o = CreateObject("WinHttp.WinHttpRequest.5.1")

Dim filename As String
filename = "data.txt"

Dim URL As String
URL = "https://www.yahoo.co.jp"

o.Open "GET", URL
o.send
  
Debug.Print o.responseText
Call SaveAsText2(filename, o.responseText)

End Sub


Sub SaveAsText(filename As String, d As String)

'Microsoft ActiveX Data Objects 6.1 Library

Dim output As ADODB.Stream
Set output = New ADODB.Stream

With output
    .Type = adTypeText
    .Charset = "UTF-8"
    .LineSeparator = adLF
    .Open
End With
  
  output.WriteText d, adWriteLine
  output.SaveToFile filename, adSaveCreateOverWrite
  output.Close

End Sub

実行方法

[開発] → [マクロ] → [web2] → [実行(R)]

メモ

  • xlsm 形式で保存をしないと、次に読み込んだ時にマクロが消える。
  • ファイルはドキュメント直下に作成される。変更したい場合はファイル名をフルパスで指定する事。
  • InternetExplorer.Application よりもこちらの方が高速。