
エクセル マクロについて質問です。
現在,以下のような記述をエクセル上のボタンに登録しています。
ボタンを押すと,デスクトップ上の任意のCSVファイルの選択を行い,CSVファイルを選択し,そのCSVデータを全てエクセル上のデータとして落としさせたいと思っています。
しかし,csvファイルによっては,
「実行時エラー
アプリケーション定義またはオブジェクト定義のエラーです。」と出て,
「デバック(D)」ボタンを押すと,下から4行目の
「Cells(i, j) = strCell」のところが,黄色くエラーとして表示されてしまいます。
下記の記述もネット上で皆さんに教えていただきながらなんとかやっているもので,正直自分自身でよく理解できていませんが,上記のようなエラーを回避する方法をどなたかご教示いただけないかと思います。
どうかよろしくお願いいたします。
Sub Macro5()
Dim varFileName As Variant
Dim intFree As Integer
Dim strRec As String
Dim strSplit() As String
Dim i As Long, j As Long, k As Long
Dim lngQuate As Long
Dim strCell As String
varFileName = Application.GetOpenFilename(FileFilter:="CSVファイル(*.csv),*.csv", _
Title:="CSVファイルの選択")
If varFileName = False Then
Exit Sub
End If
intFree = FreeFile '空番号を取得
Open varFileName For Input As #intFree 'CSVファィルをオープン
i = 0
Do Until EOF(intFree)
Line Input #intFree, strRec '1行読み込み
i = i + 1
j = 0
lngQuate = 0
strCell = ""
For k = 1 To Len(strRec)
Select Case Mid(strRec, k, 1)
Case "," '「"」が偶数なら区切り、奇数ならただの文字
If lngQuate Mod 2 = 0 Then
Call PutCell(i, j, strCell, lngQuate)
Else
strCell = strCell & Mid(strRec, k, 1)
End If
Case """" '「"」のカウントをとる
lngQuate = lngQuate + 1
strCell = strCell & Mid(strRec, k, 1)
Case Else
strCell = strCell & Mid(strRec, k, 1)
End Select
Next
'最終列の処理
Call PutCell(i, j, strCell, lngQuate)
Loop
Close #intFree
End Sub
Sub PutCell(ByRef i As Long, ByRef j As Long, ByRef strCell As String, ByRef lngQuate As Long)
j = j + 1
'「""」を「"」で置換
strCell = Replace(strCell, """""", """")
'前後の「"」を削除
If Left(strCell, 1) = """" And Right(strCell, 1) = """" Then
strCell = Mid(strCell, 2, Len(strCell) - 2)
End If
Cells(i, j) = strCell
strCell = ""
lngQuate = 0
End Sub

No.2ベストアンサー
- 回答日時:
iかjがゼロになってませんか?
デバックモードでカーソル当てると値を確認出来ます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) 数字が「0」の列を削除するため、下記のコードを実行しましたが、コンパイルエラーSubまたはFunct 3 2022/12/04 00:00
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ブラウザでASPファイルを開こう...
-
Microsoft Access エラー 3051
-
エクセルVBA フォームを開く時...
-
Refreshで落ちる
-
FFFTPでサーバに新規フォルダが...
-
ExcelVBAで、隠しフォルダにあ...
-
フォルダ参照ではなくファイル...
-
OCXのライセンス
-
VBAでFTPファイル転送がうまく...
-
ASP.NETで、別サーバーへファイ...
-
EXCEL VBA ファイルが開かれて...
-
複数のテキストファイルをexcel...
-
バッチファイルが作成できない
-
HTMLタグのあるCSVファイルを利...
-
ダウンロード不可PDFファイルは...
-
Excelでdatファイルを作成??
-
ASPでCSVファイルを作成しダウ...
-
バッチによるショートカットの...
-
サンダーバードでの新規にフォ...
-
CADでグラフ作成
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【Excel VBA】PDFを作成して,...
-
Microsoft Access エラー 3051
-
VBAでファイルパスが長すぎてコ...
-
FFFTPでサーバに新規フォルダが...
-
OCXのライセンス
-
エクセルVBA フォームを開く時...
-
Refreshで落ちる
-
VBAでFTPファイル転送がうまく...
-
ブラウザでASPファイルを開こう...
-
web.configファイル内、valueに...
-
ASP.NETで、別サーバーへファイ...
-
Excel VBA シートを指定して...
-
VBSで指定したフォルダにファイ...
-
BASP21のアップロードについて
-
フォルダ参照ではなくファイル...
-
ExcelVBAで、隠しフォルダにあ...
-
Adobe Reader について
-
VB2005 で encoding="Shift_JIS...
-
処理を別ファイルに書きたいん...
-
【python】pandasでExcel(...
おすすめ情報