Excel VBA質問箱 IV

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

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


12682 / 76734 ←次へ | 前へ→

【69568】CSV読み込みで
質問  たつのこ E-MAIL  - 11/8/3(水) 15:34 -

引用なし
パスワード
     On Error GoTo ErrorTrap

  Sheets("download.csv").Select
  Cells.Select
  Rows("2:1000").Select
  'Selection.Delete Shift:=xlUp


  fname = Application.GetOpenFilename(FileFilter:="CSVファイル(*.csv),*.csv", FilterIndex:=1, Title:="ファイル選択 download.csv", MultiSelect:=False)
  If StrConv(fname, vbUpperCase) = "FALSE" Then Exit Sub
  
  '空いているファイル番号を取得します
  ch1 = FreeFile
  
  'FileNamePath のファイルをオープンします
  Open fname For Input As #ch1
  
  
  Worksheets("download.csv").Activate
  Worksheets("download.csv").Columns("A:AX").NumberFormat = "@"
  
  Rowcnt = 1

  With Worksheets("download.csv")
 
    Do While Not EOF(ch1)   'ファイルの終端かどうかを確認します。
  
      '1行読み込みます
      Line Input #ch1, textline
      textline = Replace(textline, vbLf, vbCrLf)
      'textline = Replace(textline, vbLf, ",")
      
      ipos0 = 1
      For i = 1 To 35
        ipos1 = InStr(ipos0, textline, """")
        ipos2 = InStr(ipos1 + 1, textline, """")
        If ((ipos1 <> 0) And (ipos2 <> 0) And (ipos2 > ipos1)) Then
          For j = ipos1 + 1 To ipos2 - 1
            If (Mid(textline, j, 1) = ",") Then
              Mid(textline, j, 1) = vbTab
            End If
          Next j
        Else
          Exit For
        End If
        ipos0 = ipos2 + 1
      Next i
      
    
      'カンマで分離します
      csvline() = Split(textline, ",")
      
      ix = UBound(csvline())
      For i = 1 To ix
        csvline(i) = Replace(csvline(i), vbTab, ",")
      Next i

      Rowcnt = Rowcnt + 1
      '配列渡しでセルに代入
      Range(Cells(Rowcnt, 1), Cells(Rowcnt, UBound(csvline()) + 1)) = csvline()

    Loop
  End With

  Close #ch1
  
  Worksheets("download.csv").Columns("A:AX").EntireColumn.AutoFit
  
  MsgBox "ファイルの読込み完了しました。" & vbCrLf & fname

    
  Exit Sub
    
  
ErrorTrap:
  MsgBox "データにエラーがあります。"
  Exit Sub


End Sub


100行のでーたが入っているCSVファイルを読み込み、行ごとに読み込んでEXCELに書きだして編集できるようにと思っているのですが、失敗する場合と、成功する場合があるのでどこをどうしたらいいかわからないので
よければ教えて欲しいです。持っているファイルをterapadで開いて保存しなおす時、失敗するときは改行コードがvbLfで、成功するときは改行コードをvbCr+vbLfで保存しなおすと改行ごとに読み込めます。
保存できるファイルの改行コードがvbLf固定で、一回開いて保存が大変なのでなるべくなら
EXCELVBAフォームのボタンクリック→ファイル選択→EXCELに書き出しがやりたいです。
文字形式は、SHIFT-JISです。
4 hits

【69568】CSV読み込みで たつのこ 11/8/3(水) 15:34 質問
【69571】Re:CSV読み込みで kanabun 11/8/3(水) 17:08 発言

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