【发布时间】:2014-10-02 12:35:09
【问题描述】:
我编写了一个 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。
【问题讨论】: