◆CSVファイルの書き出し
ファイルの書き出し用のステートメントを下の表にまとめました。
Put | 書き出す位置を指定できます。ランダムにアクセスできます。 |
Write # | データを書き出すときにデータ項目の間にカンマ を挿入します。 文字列は、ダブル クォーテーション ("") で囲んで出力します。 |
Print # | スペースの挿入や出力位置を指定できます。 |
上の表で分かるように、CSVファイルの書き出しには、 Write # ステートメントを 使用します。 Write # ステートメントは最後の文字を出力したあと、改行を挿入します。 Write #, 変数名1, 変数名2 上記の場合は、変数名2の後に改行が入ります。 汎用的な使い方として、For ループでセルの内容を下記のように書き出した場合 For i = 1 To 10 Write # ,Cells(Rowcnt,i) Next 毎回改行が入ってしまいます。このままでは使えません。 Write # ,Cells(Rowcnt,i); 変数の最後にセミコロン (;)を付けると改行が入らなくなります。 サンプルでは、最後のセルの買出しの時だけセミコロン (;)を付けるようにしています。 example19 をダウンロードして動作を確認してください。
Sub CSV_Write() Dim FileType, Prompt As String Dim FileNamePath As Variant Dim StartRow, StartColumn, Max_Row, Max_Column As Integer Dim Rowcnt, Columncnt As Integer Dim UsedCell As Range Dim ch1 As Long FileType = "CSV ファイル (*.csv),*.csv" Prompt = "保存するファイルの名前を付けてください"'保存するファイルのパスを取得します
FileNamePath = SaveFileNamePath(FileType, Prompt) If FileNamePath = False Then'キャンセルボタンが押された
End End If'空いているファイル番号を取得します
ch1 = FreeFile'FileNamePath のファイルをオープンします
Open FileNamePath For Output As #ch1'使用しているセルの取得
Set UsedCell = ActiveSheet.UsedRange StartRow = UsedCell.Cells(1).Row StartColumn = UsedCell.Cells(1).Column Max_Row = UsedCell.Cells(UsedCell.Count).Row Max_Column = UsedCell.Cells(UsedCell.Count).Column For Rowcnt = StartRow To Max_Row For Columncnt = StartColumn To Max_Column - 1'改行を挿入しないで書き出す ; を最後に付ける
Write #ch1, Cells(Rowcnt, Columncnt); Next'改行を挿入する
Write #ch1, Cells(Rowcnt, Max_Column) Next'ファイルを閉じます
Close #ch1 End Sub
Function SaveFileNamePath(FileType, Prompt) As Variant SaveFileNamePath = Application.GetSaveAsFilename _ (ActiveSheet.Name, FileType, , Prompt) End Function