|
いつも利用させてもらってます。
色々考えていますがうまくいかないので教えて下さい。
CSVファイルの項目中にカンマと小数点を含む場合の読込方法を
教えて下さい。
商品 数量 単価 金額
="310","-1.00","0.00","-20,370",なデータの場合
商品 数量 単価 金額 その他項目
=310 -1.00 0.00 -20 370
になってしまうのですが・・・
CSVファイルの読込データを添付しますので
お手数ですがどなたか教えて下さい。
カンマで区切っている処理を工夫すればできそうなのですが・・・・
Function SelectFileNamePath(FileType, Prompt) As Variant
SelectFileNamePath = Application.GetOpenFilename(FileType, , Prompt)
End Function
Sub CSV_Read2()
Dim FileType, Prompt As String
Dim FileNamePath As Variant
Dim textline, csvline() As String
Dim Rowcnt, ColumNum As Integer
Dim ch1 As Long
FileType = "CSV ファイル (*.csv),*.csv"
Prompt = "CSV File を選択してください"
'操作したいファイルのパスを取得します
FileNamePath = SelectFileNamePath(FileType, Prompt)
If FileNamePath = False Then 'キャンセルボタンが押された
End
End If
'空いているファイル番号を取得します
ch1 = FreeFile
'FileNamePath のファイルをオープンします
Open FileNamePath For Input As #ch1
'エラーが発生したらファイルを閉じます
'CSVのファイルは1行の項目数が正確に合っていないと読めないのですが、
'色々なCSVがあるようなので入れておきます
On Error GoTo CloseFile
'表の行番号の初期化 1行目から読み込んだデータを入力します
Rowcnt = 1
Do While Not EOF(ch1) 'ファイルの終端かどうかを確認します。
'1行読み込みます
Line Input #ch1, textline
'ダブルクォーテーションを削除します
textline = Replace(textline, """", "")
'カンマで分離します
csvline() = Split(textline, ",")
'配列渡しでセルに代入
Range(Cells(Rowcnt, 1), _
Cells(Rowcnt, UBound(csvline()) + 1)) = csvline()
Rowcnt = Rowcnt + 1
Loop
CloseFile:
'ファイルを閉じます
Close #ch1
End Sub
|
|