あるフォルダのすべてのテキストファイルを1つずつ順番に読み込んで、条件に一致する箇所に行を挿入したあと、別のフォルダに出力するプログラム例です。”挿入”は、条件に一致する行が出現したら、その行の直前にあらかじめ決めれたら文字列もいっしょに追加出力することで行います。
次のコードでは、
- 「C:\テスト」フォルダ内にあるすべての「.html」ファイルを読み込みます。
- 挿入後のファイルは「C:\テスト\NewFile」フォルダに同名ファイルとして出力します。
- テキストファイルを1行ずつ読み込んでいき、「</head>」が出てきたらまず「<style>~</style>」の複数行の文字列を出力します。
- そのあと「</head>」自身も出力します。それによって「</head>」の直前に「<style>~</style>」が挿入された形になります。
- この例はHTMLファイルなので、「<style>~</style>」を追加することで、ブラウザ表示したときにそのスタイルが適用されます。
プログラム例:
Sub TextFileSample3()
Dim strFileName As String
Dim intFilenum1 As Integer, intFilenum2 As Integer
Dim strData As String
Const cstrSrc = "C:\テスト\"
Const cstrDst = "C:\テスト\NewFile\"
'C:\テストフォルダ内の最初の.htmlファイルを読み込む
strFileName = Dir(cstrSrc & "*.html")
'フォルダ内のすべての.htmlファイルを読み込むループ
Do While strFileName <> ""
'入力元と出力先のファイルを開く
intFilenum1 = FreeFile()
Open cstrSrc & strFileName For Input As #intFilenum1
intFilenum2 = FreeFile()
Open cstrDst & strFileName For Output As #intFilenum2
'入力元ファイルからすべての行を読み込むループ
Do Until EOF(intFilenum1)
Line Input #intFilenum1, strData
'「</head>」が出てきたらその前に「<style>~</style>」を挿入
If strData = "</head>" Then
Print #intFilenum2, "<style>"
Print #intFilenum2, "<!--"
Print #intFilenum2, "ul li{"
Print #intFilenum2, " list-style-type: none;"
Print #intFilenum2, " font-weight:bold;"
Print #intFilenum2, " border-left: solid 8px #b1b123;"
Print #intFilenum2, " background: #fcfced;"
Print #intFilenum2, " padding: 5px;"
Print #intFilenum2, " margin-bottom: 5px;"
Print #intFilenum2, "}"
Print #intFilenum2, "-->"
Print #intFilenum2, "</style>"
End If
'出力先に1行書き込み
Print #intFilenum2, strData
Loop
'入力元と出力先のファイルを閉じる
Close #intFilenum1: Close #intFilenum2
'次のファイルへ進む
strFileName = Dir()
Loop
MsgBox "処理完了!", vbOKOnly + vbInformation
End Sub
実行例:
■C:\テストのファイル



■C:\テスト\NewFileのファイル

 |