Excel VBA-运行时错误'53':找不到文件。但是找到了文件

时间:2018-11-14 19:03:13

标签: excel vba

我有一个Excel工作表,该工作表从充满.txt文档的文件夹中提取数据。 上周星期五,它奏效了。没有改变。本周一,我收到运行时错误'53':找不到文件。

有趣的是,当我单击“调试”时,它突出显示了代码中的一行,当我将鼠标悬停在“ sFile”变量上时,它告诉我显然找不到的文件名。 。,但是只有找到它的名字才能知道它的名称。是的,我已经证实该文件确实存在。

Excel工作表位于H:\ My Documents \ Loma CW3 Reports \

.txt数据文件位于H:\ My Documents \ Loma CW3 Reports \ Product Statistics \

它应该提取的前三个文件是:

- PR20180912T153019.txt
- PR20180913T070005.txt
- PR20180913T153002.txt

就像上面提到的,当我调试代码并将鼠标悬停在“打开输入为#1的sFile”行中时,它会告诉我:

sFile = "PR20180912T153019.txt"

由于我不对其中的任何文件名进行硬编码,因此它只能知道它是否已成功扫描了文件夹。

我尝试删除该文件,将文件重命名为“ apple”之类的词,然后检查它是否变为只读(不)。我在这里被圈了一下,因为它像上周一样工作,而本周打开并尝试它之后,一切都没有改变。

以下代码:

Private Sub CommandButton1_Click()

' Dim myFile As String
Dim text As String, textLine As String
Dim sFile As String, rowTarget As Long

rowTarget = 2

' myFile = Application.GetOpenFilename()

sFile = Dir("H:\My Documents\Loma CW3 Reports\Product Statistics\" & "*.txt*")
Do Until sFile = ""
    Open sFile For Input As #1
    Do Until EOF(1)
        Line Input #1, textLine
        text = text & textLine
    Loop
    Close #1

    Do stuff here

    rowTarget = rowTarget + 1
    sFile = Dir()
    text = ""
Loop
End Sub

1 个答案:

答案 0 :(得分:1)

我最终将目录指定为单独的变量,并在打开文件时在其后附加了sFile名称。

Dim directory As String

directory = "H:\My Documents\Loma CW3 Reports\Product Statistics\"
sFile = Dir(directory & "*.txt*")

Do Until sFile = ""
    Open (directory & sFile) For Input As #1
    blah blah blah

感谢@comintern