有没有办法在错误循环中捕获VBA代码?

时间:2019-05-08 13:39:24

标签: excel vba error-handling

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

在我对程序的愿景中,我只想让一个子执行所有操作。因此,我想让子程序处于等待状态,以等待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”和“ expected”之间循环,但是在一个循环后,vba会因预期的错误“找不到文件”而自行中断。有人知道是否有可能循环出现错误,还是我必须另做一个小组?

2 个答案:

答案 0 :(得分:1)

您无需等待错误,这就是您想要的:

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

答案 1 :(得分:0)

您可以检查代码以查看您的路径是否存在。如果没有,请等待。

Do While Dir(Fichier) = ""
    Application.Wait(Now() + TimeValue("00:00:10"))
Loop