如何在VBA中使用.OpenText打开以第一列开头的文本文件,如;ID";没有得到SYLK错误

如何在VBA中使用.OpenText打开以第一列开头的文本文件,如;ID";没有得到SYLK错误,vba,excel,Vba,Excel,我在Excel VBA的.OpenText方法中遇到了一个令人讨厌的小错误。。当前两个字母为大写“ID”时,打开任何文本或CSV文件时会出现错误。这是微软的文章,所以你知道我不是疯子: 因此,我试图找到一种解决方法,它不需要复制整个文件来重新命名第一个头。我正在处理一些大的文本文件,这将是一个令人不满意的最后手段 在调用.OpenText之前,我尝试了On Error Resume Next,但没有成功。。有没有人遇到了这个问题,找到了一个我没有的简单解决方案?有没有办法打开第一行并查找/替换文

我在Excel VBA的
.OpenText
方法中遇到了一个令人讨厌的小错误。。当前两个字母为大写“ID”时,打开任何文本或CSV文件时会出现错误。这是微软的文章,所以你知道我不是疯子:

因此,我试图找到一种解决方法,它不需要复制整个文件来重新命名第一个头。我正在处理一些大的文本文件,这将是一个令人不满意的最后手段


在调用
.OpenText
之前,我尝试了
On Error Resume Next
,但没有成功。。有没有人遇到了这个问题,找到了一个我没有的简单解决方案?有没有办法打开第一行并查找/替换文本文件的内部?或者我可以使用的
.OpenText
的额外参数?

我为您编写了这篇文章。在尝试打开文件路径之前,只需通过文件路径调用它。我特意用后期绑定编写了这篇文章,所以不需要引用。如果文件以“ID”开头,它将在文件开头添加一个撇号


只需关闭警报:

Application.DisplayAlerts = False
Application.Workbooks.OpenText Filename:="startwithID.tab"
Application.DisplayAlerts = True
我改为:

Application.DisplayAlerts = False
On Error Resume Next
Workbooks.OpenText Filename:=myfile, DataType:=xlDelimited, Tab:=False, Semicolon:=True, Local:=True
Workbooks.OpenText Filename:=myfile, DataType:=xlDelimited, Tab:=False, Semicolon:=True, Local:=True
Application.DisplayAlerts = True
第一个OpenText失败,但第二个有效


FixIDProblem是个好主意,但在大文件(~40MB)上失败了。

您打算如何处理文本?你能用其他方式导入它吗(导入文本向导、ODBC或其他什么?)太棒了!所以这本质上只是读取内存,而不是复制到另一个物理文件。。。在一个相当大的文件(20MB)上试过一次,速度绝对足够快。谢谢它将其读入内存,然后在需要时覆盖它。否则,它只会被关闭,而不会对文件执行任何操作。我这样做是因为我想你不想创建临时文件。。。这也更好。
Application.DisplayAlerts = False
On Error Resume Next
Workbooks.OpenText Filename:=myfile, DataType:=xlDelimited, Tab:=False, Semicolon:=True, Local:=True
Workbooks.OpenText Filename:=myfile, DataType:=xlDelimited, Tab:=False, Semicolon:=True, Local:=True
Application.DisplayAlerts = True