1

我在 Excel VBA 的.OpenText方法中遇到了一个令人讨厌的小错误。当前两个字母为大写“ID”时,打开任何文本或 CSV 文件时都会出错。这是来自 MS 的文章,所以你知道我没疯:http: //support.microsoft.com/kb/323626

所以,我试图找出一种解决方法,它不涉及复制整个文件只是为了重命名第一个标题。我正在处理一些大型文本文件,这将是一个不令人满意的最后手段。

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

4

3 回答 3

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
于 2012-10-25T22:51:59.757 回答
0

只需关闭警报:

Application.DisplayAlerts = False
Application.Workbooks.OpenText Filename:="startwithID.tab"
Application.DisplayAlerts = True
于 2013-05-07T18:22:38.723 回答
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)上失败

于 2013-06-11T08:56:20.577 回答