アプリケーションとしてのVBA Excel(エクセル) VBA の役立つ Tips の紹介

アプリケーションとしてのVBA

テキスト形式の読み込み・書き込み

テキスト形式の読み込み・書き込み


  ファイルの操作まで Excel でする必要は無いかもしれませんが、簡単に
  サンプルプログラムを使って解説します。

  サンプルプログラムは、テキスト形式のファイルを1行づつ読んで、新しいファイルに
  1行づつ書き込みを行っています。

  最後に読み込んだファイルを削除して、新たに作成したファイルに読み込んだ
  ファイルの名前を付けています。



  ファイルの読み込み・書き込みをする場合、最初に空いているファイル番号を
  使ってファイルのオープンが必要です。

  ファイルの読み・書きは Excel 単独の処理ではなくて、OS を仲介して行っています。

  ファイル番号とは、OS とファイルを結びつける通路みたいなものです。

  空いているファイル番号は、 FreeFile を使って取得します。

  オープンするときに、読み込み(Input)・書き込み/作成(Output)等のどういう
  モードでオープンするのかを最初に宣言します。

  その後に、実際の読み込みや書き込みを行います。

  サンプルでは1行毎に読み込み・書き込みを行っています。

  最後に Close でファイルを閉じます。

  Kill はファイルを削除します。

  Name で名前の変更を行っています。同じ名前でパスを変更すればファイルの
  移動ができます。

  example14 をダウンロードして動作を確認してください。


Sub FileDuplicate()

    Dim FileType, Prompt, Item As String
    Dim FileNamePath, TempFileNamePath As Variant
    Dim textline As String
    Dim i As Integer
    Dim ch1, ch2 As Long
    
    FileType = "すべての ファイル (*.*),*.*"
    Prompt = "File を選択してください"
    '操作したいファイルのパスを取得します
    FileNamePath = SelectFileNamePath(FileType, Prompt)

    If FileNamePath = False Then    'キャンセルボタンが押された
        End
    End If
    
    '空いているファイル番号を取得します
    ch1 = FreeFile
    'FileNamePath のファイルをオープンします
    Open FileNamePath For Input As #ch1
    
    
    'もうひとつ空いているファイル番号を取得します
    ch2 = FreeFile
    'テンポラリーファイルにユニークな名前をつけます
    TempFileNamePath = FileNamePath & Format(Now, "yyyymmddhhmmss")
    'テンポラリーファイルを作成します
    Open TempFileNamePath For Output As #ch2
    
    Do While Not EOF(ch1)           'ファイルの終端かどうかを確認します
    
        Line Input #ch1, textline  'データ行を読み込みます
        Print #ch2, textline       'データの書き込みをします
    Loop
    
    'ファイルを閉じます
    Close #ch1, #ch2

    '元のファイルを削除します
    Kill FileNamePath

    'テンポラリーファイルを元のファイルの名前に変更します
    Name TempFileNamePath As FileNamePath

End Sub

Function SelectFileNamePath(FileType, Prompt) As Variant
    SelectFileNamePath = Application.GetOpenFilename(FileType, , Prompt)
End Function


  この例では、一つのファイルだけを対象にしていますが、フォルダを指定して複数の
  ファイルを対象にすれば、一括の修正・追加ができるアプリケーションを作成できます。
  example15 は、それを行うサンプルアプリケーションです。

  このホームページの各ページの共通部分の一括修正に使っています。
  こちらも参考にしてください。


Copy (C) 2005   アプリケーションとしてのVBA   All Rights Reserved.