【发布时间】:2013-09-22 04:55:03
【问题描述】:
在这个论坛的帮助下,已经能够解决大多数问题,但这让我陷入了困境。
我有一个逗号分隔的 csv 文件 ("xxxx","zzz",),其中隐藏了 chr(10) 和 chr(13)。如果我使用脚本来替换这两个字符,我会丢失记录的结尾chr(10),因此只能作为一条记录导入。
在记事本中,文件显示完美 - 每行一条记录。如果我作为 excel 文件打开就可以了,只有当我作为 csv 分隔文件导入时才可以
感谢其他贡献者,以下是我一直在使用的。
理想情况下我想做的是:
- 选择 csv 文件
- 复制文件以保留原来的
- 清除所有会影响导入的隐藏字符
- 然后导入
-
Private Sub CSV_ImportRepl()
Dim strFile As String
Dim strBuffer As String
Dim ff As Integer
Dim strFileName As String
Dim ws As Worksheet
'ENTRIES CSV FILE ----------------------------------
' ---open file ----------
strFile = Application.GetOpenFilename("Text Files (*.csv),*.*", _
, "SELECT ENTRIES csv FILE")
strFileName = strFile
MsgBox strFileName
' ---start cleaning file ----------
strBuffer = Space(FileLen(strFile))
ff = FreeFile
Open strFile For Binary Access Read As #ff
Get #ff, , strBuffer
Close #ff
strBuffer = Replace(strBuffer, Chr(13), "")
Kill strFile
Open strFile For Binary Access Write As #ff
Put #ff, , strBuffer
Close #ff
' --- clear contents & import ----------
Sheets("Entries").Cells.ClearContents
Set ws = ActiveWorkbook.Sheets("Entries") 'set to current worksheet name
strFile = strFileName
With ws.QueryTables.Add(Connection:="TEXT;" & strFile, _
Destination:=ws.Range("A1"))
.TextFileParseType = xlDelimited
.TextFileCommaDelimiter = True
.Refresh
End With
End Sub
任何帮助将不胜感激。
【问题讨论】:
-
If I open as a an excel file it is ok如果您可以将其作为 excel 文件打开,那么请执行此操作,然后将工作表复制到您的工作簿中,而不是进行所有清洁工作? -
非常感谢您的提示 Siddharth Rout - 我又尝试了这个选项,终于让它起作用了。是的,它是一种更聪明的方法。对于任何其他人参考这里是我使用的。 (必须为当地的英国日期格式添加 Local:= True)。再次感谢。 Sub opencsv() strFile = Application.GetOpenFilename("文本文件 (.csv),.*", , "请选择文本文件...") strFileName = strFile Set src = Workbooks.Open( Filename:=strFile, Local:=True) Cells.Copy ThisWorkbook.Activate Sheets("Entries").Activate Range("A1").Select ActiveSheet.Paste Application.CutCopyMode = False src.Close End Sub
-
Gr8 :) 你为什么不把它作为答案发布然后接受呢?
-
作为新手,我不得不等待一个小时才能发布它!