|
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です。
|
|