|
ロジック自体はたいして難しくありませんが、区切り文字を単純にスペース
としてやってみると、LOGONの場合とLOGOFFの場合では全く違った配列が
できてしまったため、以下のようなコードになりました。
Sub Get_MyLog()
Dim MyDy As String, Buf As String
Dim Flg As Boolean
Dim CkAry As Variant, GetAry As Variant
Dim LgOn As Variant, LgOf As Variant
Const MyF = "C:\temp\Log.txt" '正確なフルパスに変更すること。
Do
Flg = False
MyDy = InputBox("抽出する日付を yyyy/mm/dd 形式で入力して下さい")
If MyDy = "" Then Exit Sub
If Len(MyDy) <> 10 Then Flg = True
If Mid$(MyDy, 5, 1) <> "/" Or Mid$(MyDy, 8, 1) <> "/" Then
Flg = True
End If
CkAry = Split(MyDy, "/")
If Not IsNumeric(CkAry(0)) Or Not IsNumeric(CkAry(1)) Or _
Not IsNumeric(CkAry(2)) Then
Flg = True
End If
Loop While Flg = True
Open MyF For Input Access Read As #1
Do Until EOF(1)
Line Input #1, Buf
GetAry = Split(Buf, Chr(32))
If GetAry(1) = MyDy Or GetAry(2) = MyDy Then
If Left$(GetAry(0), 5) = "LOGON" Then
LgOn = GetAry(UBound(GetAry))
ElseIf Left$(GetAry(0), 5) = "LOGOF" Then
LgOf = GetAry(UBound(GetAry))
End If
End If
Loop
Close #1
Worksheets("Sheet1").Range("A65536").End(xlUp) _
.Offset(1).Resize(, 3).Value = Array(MyDy, LgOn, LgOf)
End Sub
|
|