VB Script Open Read File

Dim fso,pdOne,f
Dim OneLineTxt As String
Dim iT,jT As Integer
Dim iPosOne,iPosTwo As integer
Dim StringTemp1,StringTemp2 As String

Sub ReadLogFile()

‘ファイルアクセスのオブジェクト生成
Set fso = CreateObject(“Scripting.FileSystemObject”)

‘ログファイルの存在性判定
pd1 = fso.FileExist(Cells(4,4).Value)

‘戻り値0の場合は、ファイルなし
if 0 = pd1 Then

  MsgBox "指定されたログファイルが存在しません。"

  ’処理完了
  Exit Sub

End If

‘ファイルのオープン 読込のみ
Set f = fso.OpenTextFile(Cells(4,4).Value,1,false)

‘セル座標の初期設定 注意★:画面レイアウト変わったら、再度設定
iT = 8
jT = 2

‘予め、前回データのクリア
Do While Trim(Cells(iT,jT)) <> “” Or Trim(Cells(iT,jT+1)) <> “”
Cells(iT,jT) = “”
Cells(iT,jT+1) = “”
iT = iT + 1
Loop

‘セル座標の初期設定 
iT = 8
jT = 2

‘変数初期化
StringTemp1 = “”
StringTemp2 = “”

‘ログファイルの行毎の読込と処理
Do While f.atendofstream <> True

   oneLineTxt = f.ReadLine()

   iPosOne = InStr(OneLineTxt,"【")
   iPosTwo = InStr(OneLineTxt,"】")

   'セルに値を設定する
   If (iPos1 > 0) And (iPos2 > 0) Then

    If (StringTemp1 <> Mid(OneLineTxt,1,19) Or (StringTemp2 <> Mid(OneLineTxt,iPos1,iPos2-iPos1+1) Then

       Cells(iT,jT) = Mid(OneLineTxt,1,19)
       Cells(iT,jT+1) = Mid(OneLineTxt,iPos1,iPos2-iPos1+1)

       StringTemp1 = Mid(OneLineTxt,1,19)
       StringTemp2 = Mid(OneLineTxt,iPos1,iPos2-iPos1+1)

       iT = iT +1
    End If

   End If

Loop

‘Set f = f.Close()
‘ファイルハンドルのクリア
Set f = Nothing
Set fso = Nothing

End Sub

‘ログファイルの選択
Sub SelectFile()
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = False
,Filters.Clear
,Filters.Add “Log Files”,”.log” ,Filters.Add “All Files”,”.*”
If .Show = -1 Then
‘ファイルのフルパスの取得
Sheet1.Cells(4,4) = .SelectedItmes(1)
End If
End With
End Sub

“データのクリア
Sub ClearAllData()

iT = 8
jT = 2

Do While iT < 2000
Cells(iT,jT) = “”
Cells(iT,jT+1) = “”
iT = iT +1
Loop
End Sub

Private Sub CommandButton1_Click()
Call ReadLogFile
End Sub

Private Sub CommandButton2_Click()
Call ClearAllData
End Sub

Private Sub CommandButton3_Click()
Call SelectFile
End Sub

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です