【问题标题】:How to open a badly formatted csv using VBA?如何使用 VBA 打开格式错误的 csv?
【发布时间】: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 包含一个本身包含逗号的字段,则该字段应被 "" 包围,因此您需要为导入配置该设置。双击文件打开时似乎默认情况下会发生这种情况。

标签: excel vba csv


【解决方案1】:

解决方案就是使用workbooks.open。 excel 所做的任何魔术都会被此函数捕获。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-05
    • 1970-01-01
    • 1970-01-01
    • 2018-03-13
    • 2020-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多