【发布时间】:2021-04-07 04:55:00
【问题描述】:
我有一个 27513 行的 CSV 文件,有时它不应该有逗号。
如果我通过在 Windows 资源管理器中双击 csv 文件在 Excel 中打开文件,Excel 会设法正确格式化它,即使某些单元格的文本中有逗号。
如果我使用典型的 VBA 代码导入 csv 文件,这些错误不会得到修复。
Option Explicit
Private uri As String
Private ws As Worksheet
Private Sub btnUpload_Click()
shtRawData.Activate
Set ws = ActiveWorkbook.Sheets("RawData") 'set to current worksheet name
uri = Application.GetOpenFilename("Text Files (*.csv),*.csv", , "Please select text file...")
With ws.QueryTables.Add(Connection:="TEXT;" & uri, Destination:=ws.Range("A1"))
.TextFileParseType = xlDelimited
.TextFileCommaDelimiter = True
.Refresh
End With
End Sub
我知道上面的代码没有损坏。
我也理解 csv 格式错误,应该使用不同的分隔符,无论是双引号、制表符还是笑脸表情符号。
当您双击 csv 文件并打开它时,Excel 会做更多的事情。
Excel 做了什么来正确猜测(至少在这种情况下)文件的正确格式,以及 VBA 如何做到这一点?
【问题讨论】:
-
也许看:docs.microsoft.com/en-us/office/vba/api/… 如果 CSV 包含一个本身包含逗号的字段,则该字段应被
""包围,因此您需要为导入配置该设置。双击文件打开时似乎默认情况下会发生这种情况。