OR
誰でも自由に記事を投稿・編集できるオープンリファレンス
記事ID:637
区分:プログラム  |  分類:VB  |  最終更新日:2014/12/04
クリエイティブ・コモンズ 表示-継承ライセンス 2.1
【VB6/VBA】テキストファイルを出力する
関連タグ:vb6, vba, ファイル入出力
このエントリーをはてなブックマークに追加      
本文
履歴
編集
閲覧数: 121,558
VB6関連技術まとめ > 【VB6/VBA】テキストファイルを出力する

VB6・VBA でテキストをファイルに出力するには、いくつかの方法があります。

 

Open ステートメントでファイルを開いて書き込む

Open ステートメントでファイルを出力する場合は、まず Open ステートメントでファイルを開き、次に Print # または Write # ステートメントでテキストを出力後、最後に Close ステートメントでファイルを閉じるといった処理を行います。出力ファイルに対して、出力テキストを上書きするか追記するかは、Open ステートメントのモードで指定することができます。

 

【Openステートメントの書き込みモード】

モード説明
Append 書き込み(追記)モード
Output 書き込み(上書き)モード

どちらのモードでも、新規にファイルを作成する場合はファイルが存在しない場合でも新規ファイルを作成し、テキストを出力します。

 

Open ステートメントの詳細な使用方法はこちらを参照ください。

 

【サンプルコード1】

Public Sub sample()
    Dim intNo As Integer
    Dim strFileName As String

    ' テキストを出力するファイルを設定
    strFileName = "C:\tmp\sample.txt"

    ' ファイルの書き込み
    intNo = FileSystem.FreeFile()           ' フリーファイルNoを取得
    Open strFileName For Output As #intNo   ' 上書きモードでファイルをオープン
    Print #intNo, "ABCDE"
    Print #intNo, "あいうえお"
    Close #intNo                            ' ファイルをクローズ

End Sub

 

上記サンプルは「C:\tmp\sample.txt」を上書きモードでオープンし、テキストを二行出力しています。ファイルをオープンする際はファイル番号を指定する必要がありますが、通常、この番号は FreeFile 関数で取得します。また、Print # ステートメントは出力文字列の後ろにセミコロン(;)を付与するかどうかによって動作が異なります。

 

条件実行例説明
セミコロンなし Print #intNo, "ABC" 文末に改行コード(CR+LF)を付与して出力します。
セミコロンあり Print #intNo, "ABC";

文末に改行コード(CR+LF)を付与しません。出力文字列は連続して出力されます。

例)Print #intNo, "ABC"; "DEF" → ABCDEF

FileSystemObject を使って書き込む

FileSystemObject を使って書き込む場合は、まず FileSystemObject のインスタンスを生成し、その OpenTextFile メソッドを使ってファイルをオープン(TextStream オブジェクトを生成)します。オープンしたファイルに対する書き込みは、生成したTextStream オブジェクトの Write メソッドまたはWriteLine メソッドで行います。どちらのメソッドもテキストの出力メソッドですが、WriteLine メソッドは文字列の後に改行コードを一緒に出力します。

 

【サンプルコード2】

Public Sub sample2()
    Dim file As String
    Dim Fso As New FileSystemObject
    Dim Ts As TextStream

    ' テキストを出力するファイルを設定
    file = "C:\tmp\sample2.txt"

    ' ファイルの書き込み
    Set Ts = Fso.OpenTextFile(file, ForAppending, True)  ' 追記モードでファイルをオープン
    Ts.WriteLine "ABCDE"
    Ts.WriteLine "あいうえお"
    Ts.Close                                             ' ファイルをクローズ
    Set Ts = Nothing
    
End Sub

 

上記サンプルは「C:\tmp\sample2.txt」を追記モードでオープンし、テキストを二行出力しています。ファイルが既にある場合、出力文字列はファイルの最後に追記されます。また、上記例ではファイルを開く際にクリエイトフラグを True で指定しているため、ファイルが存在しない場合でも、新規にファイルを作成して、文字列を出力します。

 

クリエイトフラグ指定例説明
Set Ts = Fso.OpenTextFile(file, ForAppending, True) ファイルがない場合は新規で作成します。
Set Ts = Fso.OpenTextFile(file, ForAppending, False) ファイルがない場合はエラーとなります。
関連記事
外部リンク
外部リンクはありません。
- 記事検索 -