2013-05-07 6 views
0

Я запускаю Python через макрос VBA. Я хочу правильное сообщение об ошибке, если путь Python не очень хорош. Я использую этот макрос на двух разных компьютерах, а пути Python не совпадают на этих двух компьютерах. В 2 пути находится на 2 Дифференц клеток Имени path_Python и path_Python_2 Вот мой код:Обработка ошибок VBA, определение ошибки в ошибке

Function launchPython() As Boolean 
Dim pathScript As String 

pathScript = [path_files] + "code.py" 

On Error GoTo err 
    Shell [path_Python].Value & " " & pathScript 
    launchPython = True 
    Exit Function 

err: 
    On Error GoTo err2 
     Shell [path_Python_2].Value & " " & pathScript 
     launchPython = True 
err2: 
    launchPython = False 
    MsgBox "Error: please check Python paths" 

End Function 

Проблема заключается в том, когда 2 путей не хорошо, вместо того чтобы идти к ERR2, у меня есть сообщение об ошибке VBA блокирования

err: 
    On Error GoTo err2 
     Shell [path_Python_2].Value & " " & pathScript 

Как это решить? Большое спасибо

+0

Не можете ли вы проверить путь, используя операторы 'IF' вместо обработчиков? – 2013-05-07 09:24:50

ответ

0

Вместо того, чтобы пытаться передать команду потенциально отсутствующему пути, я бы проверял, существует ли файл и пытаюсь это сделать. Вы можете использовать одну из многих функций, таких как FileExists, в http://allenbrowne.com/func-11.html или просто проверить, что dir $ возвращает не пустое.

Dim Path as string 

path = path_python 

if dir(path) = "" then 
    path = path_python2 
    if dir(path) = "" then err.raise 
end if 

shell path & " " & pathScript 
Смежные вопросы