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