Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


18947 / 76732 ←次へ | 前へ→

【63222】CSVファイルの読込でカンマを含むデータの場合
質問  初心者です。  - 09/10/16(金) 12:16 -

引用なし
パスワード
   いつも利用させてもらってます。

色々考えていますがうまくいかないので教えて下さい。

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

1 hits

【63222】CSVファイルの読込でカンマを含むデータの場合 初心者です。 09/10/16(金) 12:16 質問
【63223】Re:CSVファイルの読込でカンマを含むデータ... kanabun 09/10/16(金) 12:53 発言
【63233】Re:CSVファイルの読込でカンマを含むデータ... 初心者です。 09/10/19(月) 9:30 質問

18947 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free