|
ありがとうございます。お礼が遅くなって済みません。CSVファイルをOpenで開いて、Input #で配列変数に取り込んで、それをEXCELに貼り付けることで解決しました。
ただ、できれば解決したい問題が残りました。
SCVの1つの文字列の中に全角のカンマ(,)と全角のダブルクォーテーション(”)が使用されています。
例
J5 ,国語テスト ,M10 ,
J5 ,テスト1,テスト2 ,M10 ,
J5 ,時間”9:30”遅刻厳禁 ,M10 ,
これをInput #で配列変数に取り込む時、
「テスト1,テスト2」が「テスト1」「テスト2」
となります。
これを回避するため、下記のように文字列を半角のダブルクォーテーションで囲むようにすると
J5 ,"テスト1,テスト2",M10 ,
J5 ,"時間”9:30”遅刻厳禁",M10 ,
今度は
「"時間”9:30”遅刻厳禁"」が「時間」「9:30”遅刻厳禁"」
となってしまいます。
Input #が全角の(,)(”)を半角の(,)(")と同様に扱ってしまっていることが原因のようですが、ヘルプをみても、区別して認識させる方法が載ってないようです。
どなたか、何か解決方法をご存知の方がいらしたら教えてください。
以上よろしくお願いします。
〜略〜
'CSVファイルのデータを文字列形式でEXCELファイルに丸ごとコピーする
Open strOutFileName For Input As #1
'Excelファイル名を設定する
strTempFileName = ActiveWorkbook.Path + "\" + str本体価格CSVtoEXCELファイル名称
'一時的にEXCELファイルを作成して、ワークブックで開いて処理をした後、削除する。
Open strTempFileName For Output Access Write As #2
Close #2
Workbooks.Open strTempFileName 'CSVファイルを貼り付けるEXCELファイルが現在アクティブ
Do Until EOF(1)
lngCSV処理CNT = lngCSV処理CNT + 1
lngCSVTBL行CNT = lngCSVTBL行CNT + 1
Application.StatusBar = strCSV拡張子 & "全データ " & lngCSV全データ行数 & "行中、" & Format(lngCSV処理CNT, "000000") & "行目読込み中"
'CSVファイルの内容を1行ずつ配列に設定する
For i = 1 To intCSVカンマ数 + 1
Input #1, strCSVTBL(lngCSVTBL行CNT, i)
Next
'配列の内容をEXCELに貼り付ける
If lngCSVTBL行CNT = lngCSVTBL行数 Or EOF(1) Then
ActiveWorkbook.Worksheets(1).Range(Cells(intCSV行, intCSV書始め列), Cells(intCSV行 + lngCSVTBL行数 - 1, intCSV書始め列 + intCSVカンマ数)).Value = strCSVTBL
End If
Loop
Close #1
Erase strCSVTBL
〜略〜
|
|