エクセルVBAを使用してテキストファイルにデータを書き込む
以下は、私たちはCSV(カンマ区切り)テキストファイルにExcelの範囲を書き込みエクセルVBAでプログラムを見ていきます。
状況:
ワークシート上のコマンドボタンを配置し、次のコード行を追加します。
1.まず、我々は、String型の変数のmyFileと呼ばれる、タイプレンジのRNGと呼ばれるオブジェクト、Variant型のcellValueという変数を宣言し、変数はInteger型のI、およびInteger型のJと呼ばれる変数と呼ばれます。 Variant型の変数が値の任意の型を保持することができるので、ここではVariant型の変数を使用します。
Dim myFile As String, rng As Range, cellValue As Variant, i As Integer, j As Integer
2.私たちは、完全なパスとファイルのファイル名を指定する必要があります。
myFile = Application.DefaultFilePath & "\sales.csv"
注:DefaultFilePathプロパティは、デフォルトのファイルパスを返します。デフォルトのファイルの場所を変更するには、[ファイル]タブで、[オプション]、[保存]をクリックします。
3.私たちは、選択した範囲と範囲オブジェクトのRNGを初期化します。
Set rng = Selection
4.次のコード行を追加します。
Open myFile For Output As #1
注意:このステートメントは、ファイルへの書き込みができるようになります。私たちは、コードの残りの部分の間に第1位としてファイルを参照することができます。ファイルがすでに存在する場合、それが削除され、同じ名前の新しいファイルが作成されます。
-
[スタート]ダブルループ。
For i = 1 To rng.Rows.Count For j = 1 To rng.Columns.Count
注:rng.Rows.Count行(この例では17)の数を返し、rng.Columns.Countは列(この例では4)の数を返します。
6.エクセルVBA変数cellValueにセルの値を書き込みます。
cellValue = rng.Cells(i, j).Value
テキストファイルにcellValueの値を書き込むために、次のコード行を追加します7。
If j = rng.Columns.Count Then Write #1, cellValue Else Write #1, cellValue, End If
説明:jは列数(行の最後の値)に等しいとき場合、Elseステートメントのために、ExcelのVBAは(、cellValueに#1を書く)新しい行を開始します。コンマ、(カンマで)使用書き込み#1、cellValue、との値を分離します。
8.両方のループを閉じることを忘れないでください。
Next j Next i
9.閉じるファイル。
Close #1
10.データを選択し、シート上のコマンドボタンをクリックしてください。
結果: