#772 テキストファイルの一部を削除して出力するプログラム例 VBA

あるフォルダのすべてのテキストファイルを1つずつ順番に読み込んで、一定範囲の行を削除したあと、別のフォルダに出力するプログラム例です。実際には、”削除”するのではなく”出力しない”ことで削除された状態にします。

次のコードでは、
  • 「C:\テスト」フォルダ内にあるすべての「.html」ファイルを読み込みます。
  • 一部削除後のファイルは「C:\テスト\NewFile」フォルダに同名ファイルとして出力します。
  • テキストファイルを1行ずつ読み込んでいき、「<div id="footer">」が出てきたら削除フラグをONにします。
  • 削除フラグがONの状態で、「</div>」が出てきたら削除フラグをOFFにします。
  • 削除フラグの状態を目安にして、OFFの場合だけ出力するようにします。ONの間は出力されないので、結果的にその範囲は削除された形になります。

プログラム例:

Sub TextFileSample2()

  Dim strFileName As String
  Dim intFilenum1 As Integer, intFilenum2 As Integer
  Dim strData As String
  Dim blnDelFlg As Boolean
  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

      '「<div id="footer">」が出てきたら削除フラグをON
      If InStr(strData, "<div id=""footer"">") > 0 Then
        blnDelFlg = True
      End If

      '削除フラグがOFFなら出力先に1行書き込み
      ' ※フラグがONの間は出力しないことで削除した形にする
      If Not blnDelFlg Then
        Print #intFilenum2, strData
      End If

      '削除フラグがONで「</div>」が出てきたら削除フラグをOFF
      If blnDelFlg And InStr(strData, "</div>") > 0 Then
        blnDelFlg = False
      End If

    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