|
kanabunさん
昨年はいろいろとご教示いただきましてありがとうございます。
前回の質問で頂いた回答から、自分なりに変更してみたのですが上手くいかないので、再度ご教示いただければと思います。
-------------------------------------------------
フォルダ内のファイルを順に処理するループ処理に変えてみたのですが、
vlan値は正常に取ってくるのですが、
hostnameの値が一番最初に見たファイルの値のままなのです。
roopと書く場所が間違っているのでしょうか…?
hostname vlan ID
ABC 220
ABC 221
ABC 306
ABC 3100
ABC 3101
ABC 3102
ABC 3103
ABC 110 ←ここから次のファイル(別のhostnameになる)
ABC 306
ABC 1900
ABC 2105
ABC 2106
-------------------------------------------------
Sub Try_test()
Dim io As Integer
Dim myLogFile As String
Dim buf() As Byte
Dim ss() As String, s As String, Series, num As Long
Dim hostname As String, ok As Boolean
Dim i As Long, j As Long
Dim rex As RegExp
Dim mm As Match
Set rex = New RegExp
ChDir ("C:\マクロ")
myLogFile = Dir("*.log", vbNormal)
Do While myLogFile <> ""
io = FreeFile()
Open myLogFile For Binary As io
ReDim buf(1 To LOF(io))
Get io, , buf
Close io
ss = Split(StrConv(buf, vbUnicode), vbCrLf)
With rex
.Pattern = "[\d-]+"
.Global = True
For i = 0 To UBound(ss) - 1
If Not ok Then
If ss(i) Like "hostname*" Then
hostname = Split(ss(i))(1)
Debug.Print , "hostname", "vlan ID"
ok = True
End If
ElseIf ss(i) Like "vlan*" Then
If Mid$(ss(i), 6, 1) Like "#" Then
For Each mm In .Execute(ss(i))
s = mm.Value
If s <> "-" Then
Series = Split(s, "-")
num = Series(0)
For j = num To Val(Series(UBound(Series)))
Debug.Print , hostname, j
Next
End If
Next
End If
End If
Next
End With
myLogFile = Dir()
Loop
End Sub
|
|