unix 側で取得したテキストエビデンスをPCに移動し、そのエビデンスのフォルダにマクロを仕掛けたエクセルファイルを放り込んでマクロを起動すると、全テキストファイルをファイル毎に1シートにして一つのブックにするものである。
今回は、java のソースのsdiff の結果を sjis にコード変換したのちタブをスペースに置き換えて利用した。
$ sdiff test01.java test02.java | nkf -s | expand -8 > ../excel/test01-02.txt $ sdiff test02.java test03.java | nkf -s | expand -8 > ../excel/test02-03.txt $ sdiff test03.java test04.java | nkf -s | expand -8 > ../excel/test03-04.txt
マクロを起動結果。
ソースコード
Sub Macro1()
Dim myPath As String
Dim myFileName As String
'新規ブックの作成
Dim myWb As Workbook
Set myWb = Workbooks.Add
'指定ディレクトリのファイルを順番にシートに貼り付け
myPath = ThisWorkbook.Path & "\"
myFileName = Dir(myPath, 0)
Do While Len(myFileName) > 0
' テキストファイルの場合シート作成
If Right(myFileName, 3) = "txt" Then
MakeSheet file:=myFileName, sheet:=myWb
End If
Debug.Print myPath & myFileName
myFileName = Dir()
Loop
End Sub
Sub MakeSheet(file As String, sheet As Workbook)
Dim myFso As Object
Dim myFileName As String
Dim myStr As String
Dim cnt As Long
Dim mySht As Worksheet
Set myFso = CreateObject("Scripting.FileSystemObject")
'
' 新しいシートを追加
Set mySht = Worksheets.Add(after:=Sheets(Sheets.Count))
mySht.Name = file
'シート全体を選択してフォントを設定
Cells.Select
mySht.Cells.Font.Size = 10
mySht.Cells.Font.Name = "HGゴシックM"
'罫線を削除
Cells.Select
ActiveWindow.DisplayGridlines = False
'ファイル名を設定
myFileName = ThisWorkbook.Path & "\" & file
'一行ずつ読み込み、シートに文字列として貼り付け
cnt = 1
With myFso.OpenTextFile(myFileName, 1)
Do Until .AtEndOfStream
myStr = .ReadLine
Debug.Print myStr
With Cells(cnt, 1)
.NumberFormatLocal = "@"
.Value = myStr
End With
cnt = cnt + 1
Loop
.Close
End With
' ワークシートを指定ブックに移動
mySht.Move before:=sheet.Sheets(1)
Set mytxt = Nothing
Set myFso = Nothing
Set mySht = Nothing
End Sub
0 件のコメント:
コメントを投稿