• 締切済み

csv取込マクロについて

添付画像の通り、 csvファイルの各行を、エクセルの指定の行(場所)に取り入れるマクロを教えていただきたいです。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

一番文字数・行数の少ないコードを目指して. Split後の繰り回しなし、が売り。 標準モジュールに Sub test01() i = 2 '開始行 '--フルパス指定のこと Open "C:\Users\xxx\ドキュメント\Documents\csvデータ例.csv" For Input As #1 While Not EOF(1) Line Input #1, s Range("A" & i & ":D" & i) = Split(s, ",") '4列データの場合の例 i = i + 2 '1行おきの場合の例 Wend Close #1 End Sub

  • SI299792
  • ベストアンサー率47% (780/1631)
回答No.2

>読み込むcsvファイルを選択出来るようにするには 回答者にとって、どっちがいいのか判りません(ファイルが決まっているなら、選択できない方がいい) 今後、最初に書いていただけますか。(責めているのではありません、質問者さんも、書かないと伝わらないと判らなかったと思うので) ' Option Explicit ' Sub Macro1() '   Dim Row As Long   Dim Col As Integer   Dim File As Variant '   File = Application.GetOpenFilename("csv ファイルを選択,*.csv")   If File = False Then     End   End If '   Open File For Input As #1   While Not EOF(1)     Row = Row + 2     Line Input #1, File     File = Split(File, ",") '     For Col = 0 To UBound(File)       Cells(Row, Col + 1) = File(Col)     Next Col   Wend   Close End Sub

  • SI299792
  • ベストアンサー率47% (780/1631)
回答No.1

1行おきの取り込めばいいのですね。 ANSI専用です。(ファイル、名前を付けて保存で出てきます)。他のコートの場合、補足に書いて下さい。 ' Option Explicit ' Sub Macro1() '   Dim Row As Long   Dim Col As Integer   Dim FileData As Variant '   Open "D:\Test\Data.csv" For Input As #1 '   While Not EOF(1)     Row = Row + 2     Line Input #1, FileData     FileData = Split(FileData, ",") '     For Col = 0 To UBound(FileData)       Cells(Row, Col + 1) = FileData(Col)     Next Col   Wend   Close End Sub

nknknknk222
質問者

補足

ご回答ありがとうございます! csvの読み込みは出来ました。 csvを読み込む際に、読み込むcsvファイルを選択出来るようにするには、どのような修正が必要でしょうか。。。

関連するQ&A

専門家に質問してみよう