読者です 読者をやめる 読者になる 読者になる

VBA_CSVファイルをエクセルファイルに書き込む

前書いたまとめ。詳しいコード説明は記事末尾のリンクから。

 

手順としては以下。

1.CSVファイル・エクセルファイルを開く
2.CSVファイルのデータを1行ずつ読み込む
3.読み込んだデータをエクセルファイルに書き込む

 

以下ソース。読み込むCSVの一行分のデータ数は4つとする。

Sub output()

 Open "絶対パス\ファイル名.csv" For Input As #1
 Workbooks.Open "絶対パス\エクセルファイル名.xls"
 
 rowNum = 10
 xNum = 1
 
 While xNum <= 60
    Input #1, a, b, c, d

    Workbooks("エクセルファイル名").Worksheets("シートX").Cells(rowNum, 1) = a
    Workbooks("エクセルファイル名").Worksheets("シートX").Cells(rowNum, 2) = b
 
    Workbooks("エクセルファイル名").Worksheets("シートY").Cells(rowNum, 5) = c
    Workbooks("エクセルファイル名").Worksheets("シートY").Cells(rowNum, 6) = d
  
    rowNum = rowNum + 1
    xNum = xNum + 1
 Wend
  
 Close #1
 ActiveWorkbook.Save
 Workbooks("エクセルファイル名").Close
 
End Sub

 上記のコードは、読み込んだCSVの一行目のデータである
1つ目( a )をシートXのA10
2つ目( b )をシートXのB10
3つ目( c )をシートYのE10
4つ目( d )をシートYのF10
に書き込んでいる。

そしてWhileにより、
CSVの二行目のデータを
1つ目( a )をシートXのA11
2つ目( b )をシートXのB11
3つ目( c )をシートYのE11
4つ目( d )をシートYのF11
に書き込んでおり、これが60行分繰り返される。

 

CSVファイルの60行目までをエクセルに書き込むコードだが、
CSVファイルの最後までエクセルに書き込む場合は、

While Not EOF(1)

と書く。( xNum はいらない)

EOF(fileNumber) :fileNumber はOpenした時に採番した番号。
End Of File

 以上。