CSVファイルをエクセルのシート(Sheet1)にインポートしたいです。
はじめマクロの記録でインポートしてボタンに登録して実行したのですが、2回目以降の実行で不具合が出ました。そこで、teratailにて質問しご教授いただきましたプログラムを実行しました。
該当箇所を自分のファイルに変更し試したところ、CSVファイルのインポートがどうもうまくいきませんでした。
今回の問題点
①期待する動き
挿入ボタンをクリックし、PC上からCSVファイルを選択しエクセルシートにインポート
②実際の動き
ボタンをクリックすると、メッセージボックスが開き”インポートしますか?”と出て、”はい”を選択しますとインポートされるはずですが、エラーメッセージが開きます。
③エラー内容
”microsoft visual basic 400”と表示されます。調べて見たところ、セルの未指定等が原因のようでしたので、セル、シートも指定して実行したところやはり同じエラーが出ました。
また、セルをしてすると”識別子が違います”と出ます。指定箇所が違うのでしょうか。
下記がボタンを押した際の処理です
VBA
1Public Sub ImportCsvFile() 2 3 ' 変数宣言 4 Dim csvBook As Workbook 5 Dim csvSheet As Worksheet 6 Dim Sheet1 As Worksheet 7 Dim activeCell As Range 8 Dim csvBookPath As String 9 10 If MsgBox("選択されたセルにCSVデータをインポートしてよろしいですか?", vbQuestion + vbYesNo, "確認") = vbNo Then 11 Exit Sub 12 End If 13 14 15 Set Sheet1 = ActiveSheet 16 17 18 On Error Resume Next 19 Set activeCell = Selection 20 On Error GoTo 0 21 22 23 If Range("A1:D4") Is Nothing Then 24 MsgBox "セルが選択されていないため処理を継続できません", vbExclamation + vbOKOnly, "処理失敗" 25 Exit Sub 26 27 End If 28 29 csvBookPath = Application.GetOpenFilename(FileFilter:="CSV ファイル, *.csv?") 30 31 If csvBookPath = "" Then 32 MsgBox "CSVファイルが選択されなかったので処理を終了します", vbExclamation + vbOKOnly, "処理失敗" 33 Exit Sub 34 35 End If 36 37 Application.ScreenUpdating = False 38 39 Set csvBook = GetCsvBook(csvBookPath) 40 41 If csvBook Is Nothing Then 42 MsgBox "CSVファイルを開けなかったので処理を終了します", vbExclamation + vbOKOnly, "処理失敗" 43 44 Application.ScreenUpdating = True 45 Exit Sub 46 47 End If 48 49 Set csvSheet = csvBook.Worksheets(1) 50 51 Sheet1.Unprotect 52 53 With csvSheet.UsedRange 54 csvSheet.Range(csvSheet.Cells(IIf(NEED_HEADER, 1, 2), 1), .Cells(.Cells.Count)).Copy activeCell 55 End With 56 57 csvBook.Close False 58 59 ProtectSheet ActiveSheet 60 61 Application.ScreenUpdating = True 62 63End Sub
ご指摘よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー