我が家の無線LANルーター(Aterm WR8300N)が頻繁にリンクダウンを起こすようになり、状況を把握するために作成したVBAマクロです。
結論から言うと、ログの内容から明確な原因を特定することは困難でしたが、VBAでHTTPデータを扱う際のスキルアップにつながりました。
- HTTPデータを取得する場合、IEを操作するよりもXMLHTTPを使用する方が効率的です。
- ActiveX Data Objects (ADODB.Stream) を使うことで文字コードの変換が可能です。
VBAコード
※事前にVBAの参照設定で「Microsoft XML, vX.X」および「Microsoft ActiveX Data Objects X.X Library」を追加してください。
Option Explicit
' AtermのURL、ID、PWを設定
Const URL As String = "http://192.168.0.1/index.cgi/syslog_common_c.log"
Const ID As String = "admin"
Const PW As String = "ココに【クイック設定Web】のパスワードを設定する"
Const OFFSET_ROW As Integer = 2
Const OFFSET_COLUM As Integer = 2
Sub GetLogs()
Dim data As String
Dim data2() As String
Dim i As Integer, max As Integer
' ログを取得
Dim req As MSXML2.XMLHTTP
Set req = New MSXML2.XMLHTTP
Call req.Open("GET", URL, False, ID, PW)
Call req.send(vbNull)
If req.readyState <> 4 Or req.Status <> 200 Then
' エラー処理をここに記述
End If
' そのままExcelに出力すると日本語部分が文字化けするのでEUC-JPから変換
Call toEUC(req, data)
data2 = Split(data, vbLf)
max = UBound(data2)
For i = 0 To max
ActiveSheet.Cells(i + OFFSET_ROW, OFFSET_COLUM).Value = data2(i)
Next i
Set req = Nothing
End Sub
' 文字化け対策(EUC-JP変換)
Sub toEUC(ByRef src As MSXML2.XMLHTTP, ByRef dst As String)
Dim a As ADODB.Stream
Set a = New ADODB.Stream
Call a.Open
a.Position = 0
a.Type = adTypeBinary
Call a.Write(src.responseBody)
a.Position = 0
a.Type = adTypeText
a.Charset = "EUC-JP"
dst = a.ReadText
a.Close
Set a = Nothing
End Sub
この記事の更新履歴
この記事は、生成AIを活用した自動レビュー・更新フローにより内容を見直し、必要な修正を反映しています。
2026年9月10日
- 変更機種名の不自然な文字間隔(A t e r m WR8300N)を正しい表記に修正しました。
- 削除古くなった外部ブログのファイルダウンロードリンクを削除しました。
- 変更VBAコードをHTMLのコードブロックで囲み可読性を向上させました。

