首页 > 解决方案 > 如何使用 VBA 打开格式错误的 csv?

问题描述

我有一个 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 如何做到这一点?

标签: excelvbacsv

解决方案


解决方案是简单地使用workbooks.open. 无论魔术 excel 做什么,都可以在这个函数中捕捉到。


推荐阅读