我が家の無線LANルーター(A t e r m W R 8 3 0 0 N )がやたら
リンクダウンを起こすようになり、何が起こっているのかを知るために作成したマクロ
結論から言うと、NECの無線LANルーターはログの内容が貧弱なうえに、
出力されるログの詳細が仕様が不明(サポートしていないの)で素人がみても推測程度の原因はつかめなかった。
しかし副産物で、またVBAのスキルアップできた。
・httpのデータを取得する場合は、IEの操作をVBで握るより、XMLを握った方が楽
・Activex Data Objects 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
‘Microsoft XML vX.Xを参照設定させる。
Sub GetLogs()
Dim data As String
Dim data2() As String
Dim i, 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に
Call toEUC(req, data)
data2 = Split(data, vbLf)
max = UBound(data2)
For i = 0 To max
Me.Cells(i + OFFSET_ROW, OFFSET_COLUM) = data2(i)
Next i
Set req = Nothing
End Sub
‘文字化け対策(EUC変換)
‘Microsoft Activex Data Objects X.X Library を参照設定させる。
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
‘使える文字セットはHKEY_CLASSES_ROOT\MIME\Database\Charsetを参照
a.Charset = "EUC-JP"
‘a.Charset = "_autodetect" ‘自動判別でも可
dst = a.ReadText
a.Close
Set a = Nothing
End Sub
コメント