【问题标题】:Import CSV file in VBA but cannot preserve foreign symbols在 VBA 中导入 CSV 文件但不能保留外来符号
【发布时间】:2019-06-05 15:57:21
【问题描述】:

我正在尝试创建一个脚本,在该脚本中我按下一个按钮,您会看到一个弹出窗口,您可以在其中选择您的 .CSV 文件,然后将其加载到特定目标。到目前为止,我已经做到了我刚才所说的,但作为非英语用户,我的 .CSV 中的数据是用瑞典语编写的,我需要保留我们的“特殊”符号。

我已尝试使用导入数据向导记录自己加载文件的过程,但我无法围绕该代码进行处理以使其与变量名/文件路径一起使用。

到目前为止,我得到的是下面的代码,它可以快速轻松地加载文件,但不保留“åäö”等特殊符号。

Dim ws As Worksheet, strFile As String

Set ws = Worksheets("Input")
ws.UsedRange.Clear
strFile = Application.GetOpenFilename("Text Files (*.csv),*.csv", , "Please select text file...")


With ws.QueryTables.Add(Connection:="TEXT;" & strFile, _
Destination:=ws.Range("A1"))
    .TextFileParseType = xlDelimited
    .TextFileSemicolonDelimiter = True
    .PreserveFormatting = True
    .Refresh
End With

根据导入向导,.CSV 文件的来源是“65001:Unicode (UTF-8)”,我试图找到 .QueryTables 的属性以识别这一点。

我尝试过的许多事情之一是:

.QueryType = xlOLEDBQuery / xlTextImport
.TextFilePlatform = xlWindows / xlMSDOS

但 .QueryType 只给我一个“对象不支持此方法或属性”或“无效的属性分配”。

感觉问题在于 Excel 不知道它应该如何处理文件的编码(Unicode (UTF-8)),但我在这方面还很新手,所以我可能看错了东西。

【问题讨论】:

  • 在您的连接字符串中添加类似Encoding=65001 的内容。或者,如果您有 Office 365,您可以在使用新的数据导入向导时录制宏,并且在第一个屏幕上,您会看到一个语言选项。
  • 谢谢!这确实使我朝着正确的方向前进!由于我使用的是 Office 365,我将运行 new 数据导入向导,这并没有给我太多的洞察力,但我在选项中启用了旧版数据导入。记录了我的动作,还有很多代码,但这次我发现了这个:.TextFilePlatform = 65001,这解决了我的问题!非常感谢!

标签: excel csv unicode import symbols


【解决方案1】:

感谢@Ron Rosenfeld,他带领我朝着正确的方向前进,我找到了解决方案。

所需要的只是:

.TextFilePlatform = 65001

我确实为文件>选项>数据中的文本启用了旧版数据导入。 然后我在导入时记录了我的操作,在这段代码中我找到了上面解决我的问题的行。 最终代码:

Dim ws As Worksheet, strFile As String

Set ws = Worksheets("Input")
ws.UsedRange.Clear
strFile = Application.GetOpenFilename("Text Files (*.csv),*.csv", , "Please select text file...")

With ws.QueryTables.Add(Connection:="TEXT;" & strFile, _
Destination:=ws.Range("A1"))
    .TextFileParseType = xlDelimited
    .TextFileSemicolonDelimiter = True
    .PreserveFormatting = True
    .TextFilePlatform = 65001
    .Refresh
End With

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-17
    • 2021-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-14
    • 2020-07-02
    • 1970-01-01
    相关资源
    最近更新 更多