我在Excel VBA的.OpenText
方法中遇到了一个令人讨厌的小错误。当前两个字母为大写“ID”时,打开任何文本或CSV文件时出错。这是MS的文章,所以你知道我并不疯狂:http://support.microsoft.com/kb/323626
所以,我试图找出一种解决方法,它不涉及复制整个文件只是为了重命名第一个标题。我正在处理一些大型文本文件,这将是一个令人不满意的最后手段。
我在On Error Resume Next
电话之前尝试了.OpenText
但是没有用。有没有人遇到这个并找到了一个我想念的简单解决方案?有没有办法只是打开第一行并在文本文件中查找/替换?或者我可以使用.OpenText
的额外参数?
答案 0 :(得分:3)
我是为你写的。只需在尝试打开文件路径之前调用它。我故意用后期绑定写这个,所以不需要引用。如果文件以“ID”开头,它会在文件的开头添加一个撇号。
Sub FixIDProblem(filePath As String)
Dim fso As Object
Dim text As Object
Dim contents as String
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FileExists(filePath) Then
'Open the file for reading
Set text = fso.OpenTextFile(filePath, 1)
'Load the text contents to variable
contents = text.ReadAll
'Check for the forbidden text at the beginning
If Left(contents, 2) = "ID" Then
text.Close
'Overwrite textfile with it's contents plus an apostraphe
Set text = fso.OpenTextFile(filePath, 2)
text.Write "'" & contents
End If
text.Close
Else
MsgBox "File does not exist"
End If
Set fso = Nothing
End Sub
答案 1 :(得分:0)
只需关闭提醒:
Application.DisplayAlerts = False
Application.Workbooks.OpenText Filename:="startwithID.tab"
Application.DisplayAlerts = True
答案 2 :(得分:0)
我这样做了:
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)上失败