Есть ли способ перехватить код VBA в цикле ошибок? - PullRequest
0 голосов
/ 08 мая 2019

Я работаю над программой, использующей 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" и "ожидаемым", но после одного цикла vba разрывается самостоятельно с ожидаемой ошибкой "файл не найден".Кто-нибудь знает, есть ли возможность зацикливаться на ошибках или мне нужно сделать еще один саб?

Ответы [ 2 ]

1 голос
/ 08 мая 2019

Вам не нужно ждать ошибки, это то, что вы ищете:

Ruta = wb.Path & "\"
Exportar = Ruta & "datos" & Servicio & ".txt"
FindIt = Dir(Exportar)
While Len(FindIt) = 0
    FindIt = Dir(Exportar)
Wend
0 голосов
/ 08 мая 2019

Вы можете проверить код, чтобы увидеть, существует ли ваш путь или нет.Если нет, подождите.

Do While Dir(Fichier) = ""
    Application.Wait(Now() + TimeValue("00:00:10"))
Loop
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...