首页 > 解决方案 > 有没有办法在错误循环中捕获 vba 代码?

问题描述

我正在开发一个同时使用 Matlab 和 Excel 的程序。Excel 通过文本文件将其数据提供给 Matlab,然后,一旦 Matlab 完成分析,它会创建一个文本文件以供 Excel 读取。

在我对程序的设想中,我希望只有一个潜艇可以做所有事情。因此,我想暂停 sub 等待 Matlab 直到文件准备好。我的问题来了,因为在Matlab完成之前没有文件,试图打开文件会导致错误。

我尝试使用错误处理程序进行循环,但似乎 VBA 不允许这样做。

这是我的测试代码:

Sub Test()

    Fichier = "'filepath'\file.txt"
    IndexFichier = FreeFile()
1:
    On Error GoTo expected   
    Open Fichier For Input As #IndexFichier

    Close #IndexFichier
    Exit Sub

expected:
    Err.Clear
    Close #IndexFichier 'Don't know if useful'
    GoTo 1


End Sub

我希望代码在“1”和“预期”之间循环,但是在一个循环之后,vba 会自行中断,出现预期的错误“找不到文件”。有谁知道是否有可能循环错误还是我必须制作另一个子?

标签: excelvbaerror-handling

解决方案


您无需等待错误,这就是您要查找的内容:

Ruta = wb.Path & "\"
Exportar = Ruta & "datos" & Servicio & ".txt"
FindIt = Dir(Exportar)
While Len(FindIt) = 0
    FindIt = Dir(Exportar)
Wend

推荐阅读