エクセルのCSV読み込みについて
現在,以下の記述でエクセル上にマクロ実行ボタンを作成しました。
任意のCSVファイルをエクセルに取り込み利用する目的です。
実行ボタンを押すと,「実行時エラー ファイルにこれ以上データがありません。」として,記述中の
「Input #intFF, X(1), X(2), X(3), X(4), X(5), X(6), X(7) ' (2)」
部分が黄色になって止まってしまいます。
エクセル画面上には,希望通りのデータが出力されているようなので,このエラーが表示されなければデータの取り込みとしては問題ないのですが・・・。
どのようにこのエラーを回避し処理すればよいかかが分かりません。
どなたかご教示いただければ幸いです。
どうかよろしくお願いいたします。
Sub Macro4()
' CSV形式テキストファイル(7カラム)読み込みサンプル
Const cnsTITLE = "テキストファイル読み込み処理"
Const cnsFILTER = "CSV形式ファイル (*.csv),*.csv,全てのファイル(*.*),*.*"
Dim xlAPP As Application ' Applicationオブジェクト
Dim intFF As Integer ' FreeFile値
Dim strFileName As String ' OPENするファイル名(フルパス)
Dim vntFileName As Variant ' ファイル名受取り用
Dim X(1 To 7) As Variant ' 読み込んだレコード内容 ' (1)
Dim GYO As Long ' 収容するセルの行
Dim lngREC As Long ' レコード件数カウンタ
' Applicationオブジェクト取得
Set xlAPP = Application
' 「ファイルを開く」のフォームでファイル名の指定を受ける
xlAPP.StatusBar = "読み込むファイル名を指定して下さい。"
vntFileName = xlAPP.GetOpenFilename(FileFilter:=cnsFILTER, _
Title:=cnsTITLE)
' キャンセルされた場合はFalseが返るので以降の処理は行なわない
If VarType(vntFileName) = vbBoolean Then Exit Sub
strFileName = vntFileName
' FreeFile値の取得(以降この値で入出力する)
intFF = FreeFile
' 指定ファイルをOPEN(入力モード)
Open strFileName For Input As #intFF
GYO = 1
' ファイルのEOF(End of File)まで繰り返す
Do Until EOF(intFF)
' レコード件数カウンタの加算
lngREC = lngREC + 1
xlAPP.StatusBar = "読み込み中です....(" & lngREC & "レコード目)"
' レコードを読み込む(このサンプルは7項目のCSV)
Input #intFF, X(1), X(2), X(3), X(4), X(5), X(6), X(7) ' (2)
' 行を加算しA~G列にレコード内容を表示(先頭は2行目)
GYO = GYO + 1
Range(Cells(GYO, 1), Cells(GYO, 7)).Value = X ' 配列渡し ' (3)
Loop
' 指定ファイルをCLOSE
Close #intFF
xlAPP.StatusBar = False
' 終了の表示
MsgBox "ファイル読み込みが完了しました。" & vbCr & _
"レコード件数=" & lngREC & "件", vbInformation, cnsTITLE
End Sub
お礼
回答ありがとうございます 上記のMSDNは読みましたが、あまり考えていませんでした。勝手に型を認識してしまうんですね。。 CSVデータに手を入れるのはやや面倒でしたが、 ダブルコーテーションをつける事により解決 できました。 まことにありがとうございました