#773 テキストファイルの一部に行を挿入して出力するプログラム例 VBA

あるフォルダのすべてのテキストファイルを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のファイル

| Index | Prev | Next |



T'sFactory
Accessで動く生産管理DB
Ureru Express
Webで使う販売顧客管理
Access開発&アドバイス
DB開発やテクニカルアドバイス
Copyright © T'sWare All rights reserved