vba - 在 Excel 中使用 QueryTables 导入带引号换行符的 csv

标签 vba excel csv import

我编写了一个 visual basic 宏来将 csv 文件加载到我经常使用的 Excel 中。

不幸的是,如果 csv 文件包含带引号的换行符,则结果与直接用 excel 打开 csv 文件得到的结果不同。与通常的导入工具不同,QueryTables.add() 假定它遇到的任何换行符(无论是否引用)都是该行的末尾。

有解决办法吗?我更喜欢不涉及预先修改传入的 csv 文件以删除换行符的解决方案,但我也愿意接受这方面的建议。不过,我确实希望在生成的 excel 文件单元格中有换行符。

我的宏的相关部分:

Sub LoadMyFile()
    ' Query the table of interest
    With ActiveSheet.QueryTables.Add(Connection:="TEXT;" _
      & ThisWorkbook.Path & "\" & Range("A1").Value & ".csv", _
      Destination:=Range("$A$2"))
        .Name = ActiveSheet.Name
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlOverwriteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 437
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = False
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = True
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
End Sub

这是一个带有引号换行符的示例 csv 文件

"firstCol","secondCol"
"name1","data
one"
"name 
2","data two"

宏从单元格 A1 中读取文件名(减去 .csv 扩展名)并假定 csv 文件与包含宏的 excel 文件位于同一目录中。

我在 Windows 7 机器上使用 32 位 Office Professional 2010。

最佳答案

此类 CSV 文件(数据点中的换行符)的导入仅适用于 Workbooks。打开且仅适用于区域设置格式(分隔符、文本分隔符)的 CSV,使用 Excel。

Set wb = Workbooks.Open(Filename:="C:\Users\axel\Desktop\test.csv", Local:=True)

aData = wb.Worksheets(1).UsedRange.Value
lRows = UBound(aData, 1)
lCols = UBound(aData, 2)

With ActiveSheet
 .Range(.Cells(1, 1), .Cells(lRows, lCols)).Value = aData
End With

wb.Close

问候

阿克塞尔

关于vba - 在 Excel 中使用 QueryTables 导入带引号换行符的 csv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25213510/

相关文章:

python - 文件 csv 中每行中间的空格

linux - 从 csv 文件中删除行字符

vba - 在宏运行期间保存撤消堆栈

vba - 有没有一种方法可以在不使用 select 的情况下向图表中的点添加标注标签?

excel - 从指定网站抓取数据时出错

c# - 导出扩展名为 .xlsx 的 Excel 文件

vba - 如果单元格标记为完成,则宏将行复制到新列

vba - 将数据复制到 Excel 中另一个工作表上的特定单元格区域

string - 应该是VBA中的简单循环程序

javascript - csv格式问题javascript p5