【VBA】Atermシリーズの簡単ログ取得マクロ

VBA・Officeカテゴリを表すパンダのイラスト VBA・Office

我が家の無線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のコードブロックで囲み可読性を向上させました。

文書情報

記事タイトル
【VBA】Atermシリーズの簡単ログ取得マクロ
作成日
更新日
Source URL
https://papanda925.com/?p=423

ライセンス: 本記事のうち、当サイトが権利を有する本文・自作図表は、特記なき限り CC BY 4.0 で利用できます。生成AIを活用して作成・編集した内容を含みます。コードについて、別途ライセンス表示またはリンク先GitHubリポジトリのライセンスがある場合は、その条件を優先します。引用・第三者資料・画像・商標等は本ライセンスの対象外です。 利用ポリシー

タイトルとURLをコピーしました