CSVファイルを固定長のテキストファイルに変換する方法

◆概要

このページは、Visual Basic 6.0でCSVファイルを固定長のテキストファイルに変換する方法について記載しています。


CSV(カンマ区切り)ファイルの内容を固定長文字列に変換し、その結果をファイルに書き込むことで、固定長のテキストファイルを作成できます。


現バージョンのファイルシステムオブジェクトには、CSVファイルに対する専用のメソッドやプロパティが用意されていません。ここでは、従来のファイル入出力ステートメントおよび関数を使っています。

◆Sample code

Option Explicit

'固定長データ用のユーザー定義型変数を定義
Private Type tagAll_TITLES
    Title   As String * 255
    ISBN    As String * 20
    Author  As String * 50
    Year    As String * 4
    Company As String * 255
End Type

Private Sub Command1_Click()
    'CSVファイルから読み込んだデータを固定長文字列に変換し、
'その結果を固定長ファイルのデータとして書き込む

    Dim strCsvFile   As String
    Dim strFixFile   As String
    Dim intCsvFileNo As Integer
    Dim intFixFileNo As Integer
    Dim strRecBuff   As String
    Dim udtAllTitles As tagAll_TITLES
    
    ChDir ("C:\")

    '読み込むCSVファイル名
    strCsvFile = "test.csv"
    '読み込む固定長ファイル名
    strFixFile = "D:\work\AllTitles.txt"
    
    '空いているファイル番号を取得
    intCsvFileNo = FreeFile
    'CSVファイルを開く
    Open strCsvFile For Input As intCsvFileNo
    '空いているファイル番号を取得
    intFixFileNo = FreeFile
    '固定長データを書き込むファイルを開く
    Open strFixFile For Output As intFixFileNo
        
    'ファイルの最後に達するまでループ
    Do Until EOF(intCsvFileNo)
        'ファイルから読み込んだ内容を変数に保存
        Input #intCsvFileNo, udtAllTitles.Title
        Input #intCsvFileNo, udtAllTitles.ISBN
        Input #intCsvFileNo, udtAllTitles.Author
        Input #intCsvFileNo, udtAllTitles.Year
        Input #intCsvFileNo, udtAllTitles.Company
        '変数の内容を固定長テキストファイルに書き込む
        Print #intFixFileNo, udtAllTitles.Title;
        Print #intFixFileNo, udtAllTitles.ISBN;
        Print #intFixFileNo, udtAllTitles.Author;
        Print #intFixFileNo, udtAllTitles.Year;
        Print #intFixFileNo, udtAllTitles.Company
    Loop

    MsgBox strFixFile & "に書き込みました。", vbOKOnly + vbInformation

    'ファイルを閉じる
    Close intCsvFileNo
    Close intFixFileNo

End Sub
  

◆参考 - データの書き込み後の継続と改行

Print#ステートメントでデータをファイルに書き込む際、データの後ろにセミコロ(;)をつけると改行されず、何もつけないと自動的に改行されます。


▼ページトップへ