- ベストアンサー
CSVからエクセルへの取り込み
エクセル・マクロ初心者です。 CSVファイルの一部分を、エクセルで読み込みたいのですが、 マクロでの作成は可能でしょうか。 (例) ・CSVファイル(読み込み側) ABCDE 1 2 3 4 5 ・EXCELファイル(書き込み側) ABCDE 1 2 3 4 5 ・CSV側は、複数のファイルがあります。 ・EXCEL側は、1つのシートにCSVのデータを書き込みます。 ・CSVファイルAの1B、2B、3B、4B、5Bを読み込み、EXCELファイルの、1A、1B、1C、1D、1Eに書き込みます。 ・CSVファイルBの1B、2B、3B、4B、5Bを読み込み、EXCELファイルの、2A、2B、2C、2D、2Eに書き込みます。 ・CSVファイルCの1B、2B、3B、4B、5Bを読み込み、EXCELファイルの、3A、3B、3C、3D、3Eに書き込みます。 というような事をやりたいのです。 どなたか、ご指導のほどよろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
a.csv・・・・1a,1b,1c,1d,1e b.csv・・・・2a,2b,2c,2d,2e というファイルを読み込んで <A> <B> 1a 2a 1b 2b 1c 2c 1d 2d 1e 2e と表示させてみました。※Excel2003 sp2で検証! 書くべきコードの実行部は僅か10行程度です。 ファイルを5つに増やせば質問自体の目的は達成されます。 が、2行だったらどうするのか? など、色んな問題がありそうです。 Private Sub CommandButton1_Click() Dim I As Integer Dim J As Integer Dim N As Integer Dim strCSVs(4) As String Dim strDatas() As String strCSVs(0) = "C:\Temp\a.csv" strCSVs(1) = "C:\Temp\b.csv" For I = 0 To 1 strDatas() = FileReadArray(strCSVs(I)) If UBound(strDatas()) >= 0 Then For J = 0 To 4 Me.Cells(J + 1, I + 1) = CutStr(strDatas(0), ",", J + 1) Next J End If Next I End Sub ※FileReadArray()、CutStr()に関する説明は、質問の主旨がもう一つ不明なので割愛します。 ※マクロ=記録マクロですと・・・単に、作ればいいだけでは?
その他の回答 (1)
- himadakarane
- ベストアンサー率35% (27/76)
可能です。 やり方は色々ですが、 ・CSVファイルを開き ・Excelの新規シートに内容をコピー ・CSVファイルを閉じる をCSVファイル数分繰り返し、 ・ExcelのCSV内容がコピーされたシートから該当セルにデータコピー ・作業用シート削除 という手順がわかりやすいかと