gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 20:00:14 26 4
gpt4 key购买 nike

我编写了一个 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com