以下代码演示了问题标题中所述的问题。
将其复制并粘贴到新的 Microsoft Excel 2003 工作簿中。
Sub mytest()
mypath = Application.GetSaveAsFilename()
Workbooks.OpenText Filename:=mypath, DataType:=xlDelimited, _
TextQualifier:=xlTextQualifierDoubleQuote, _
semicolon:=True, _
fieldinfo:=Array(Array(1, 2), Array(2, 2), Array(3, 2), Array(4, 2)), _
Local:=True
End Sub
执行代码。它将要求输入一个输入文件,您应该在其中使用分号分隔 test.csv 。它创建一个新工作簿并将所有数据从 test.csv 导入到sheet1。
下图为结果
但它应该显示这样的结果
fieldinfo:=Array(数组(1, 2), 数组(2, 2), 数组(3, 2), 数组(4, 2))
规定 Excel 应将所有导入的数据视为文本。不幸的是,事实并非如此。
- 二维数组:first number is the column number, second number stands for data type其中 2 代表文本
- 我必须使用“local”参数,因为我使用的是具有本地化 Office 2003 的本地化操作系统
- 操作系统无关紧要,因为它发生在 Windows XP 和 Windows 7 上
有人可以告诉我如何正确使用 opentext 和 fieldinfo 吗?
我已经知道 QueryTables.Add(Connection[...].
但这不是我的情况的解决方案。
最佳答案
如果将输入文件的扩展名从 .csv 重命名为 .txt,则 fieldinfo
参数将按设计工作。
关于vba - Workbooks.OpenText 不采用 'fieldinfo' 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9559579/