- ベストアンサー
CSVファイルをインポートするマクロの作成方法
- CSVファイルをインポートするマクロを作成する方法を教えてください。
- CSVファイルの書式やインポートする範囲についても教えて欲しいです。
- 現在作成中のソースコードも参考にして理解を深めたいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
http://okwave.jp/qa/q7577100.html 関連でしょうか? >下記のソースを元に作成しようとしているのですが、わからなくなってしまいました。 難しい事にチャレンジするのも良いとは思いますが 素直に「開いてコピー・ペースト」がオーソドックスな処理です。 基本を押さえておいたほうがよろしいかと。 マクロ記録なども参考にできますし。 Sub Macro1() Dim ws As Worksheet Dim r As Range Dim x x = Application.GetOpenFilename("CSV Files,*.csv") If VarType(x) = vbBoolean Then Exit Sub Set ws = ActiveSheet 'ActiveWorkbook.Worksheets("Sheet1") Application.ScreenUpdating = False With Workbooks.Open(x) With .Sheets(1) Set r = .UsedRange.SpecialCells(xlCellTypeLastCell) .Range("A1").Resize(3, r.Column).Copy ws.Range("D3") If r.Row > 4 Then .Range("A5", r).Copy ws.Range("A6") End If End With .Close SaveChanges:=False End With Application.ScreenUpdating = True Set ws = Nothing End Sub
その他の回答 (1)
- watabe007
- ベストアンサー率62% (476/760)
>1~3行目はエクセルのD3行,D4行,D5行 >4行目はインポートしない >5行目以降はエクセルのA6行,A7行・・・にインポートしたいと思っております。 の仕様で書いてみました、参考に >If VarType(vntFileName) = vbBoolean Then Exit Sub >strFileName = vntFileName Set FSO = CreateObject("Scripting.FileSystemObject") With FSO.OpenTextFile(strFileName) myLines = Split(.ReadAll, vbCrLf) .Close End With For i = 0 To UBound(myLines) myStr = Replace(myLines(i), """", "") myStr = Replace(myStr, "'", "") v = Split(myStr, ",") n = UBound(v) + 1 If i < 3 Then Cells(i + 3, "D").Resize(, n).Value = v ElseIf i > 3 Then Cells(i + 2, "A").Resize(, n).Value = v End If Next MsgBox "ファイル読み込みが完了しました。" & vbCr & _ "レコード件数=" & n & "件", vbInformation, cnsTitle
お礼
回答ありがとうございます。 助かりました。 オーソドックスにコピー・ペーストにしました。