Исходный вопрос
Когда я захожу в C: \ Users \ HP \ Documents \ Python Scripts и нажимаю EbayWebScraper.py, скрипт запускается. Это занимает около 30 секунд, но вывод правильный.
Я хочу запустить этот скрипт из Excel / VBA. Я попытался использовать код «RetVal = Shell» и написать его 6 разными способами. После 6 неудачных попыток я превратил код в комментарии.
Sub Python()
'RetVal = Shell("python.exe C:\Users\HP\Documents\Python Scripts\EbayWebScraper.py", vbNormalFocus)
'RetVal = Shell("C:\Users\HP\AppData\Local\Programs\Python\Python37-32\python.exe " & "C:\Users\HP\Documents\Python Scripts\EbayWebScraper.py")
'RetVal = Shell("C:\Users\HP\AppData\Local\Programs\Python\Python37-32\python.exe C:\Users\HP\Documents\Python Scripts\EbayWebScraper.py")
'RetVal = Shell("C:\Users\HP\AppData\Local\Programs\Python\Python37-32\python.exe C:\Users\HP\Documents\Python Scripts\EbayWebScraper.py", vbNormalFocus)
'RetVal = Shell("python.exe" & "C:\Users\HP\Documents\Python Scripts\EbayWebScraper.py", vbNormalFocus)
'RetVal = Shell("python.exe" & "C:\Users\HP\Documents\Python Scripts\EbayWebScraper.py")
End Sub
Нужно ли как-то замедлять макрос VBA? Действительно ли макрос VBA работает слишком быстро и не дает скрипту Python достаточно времени?
Я прочитал Макрос VBA работает слишком быстро и экспериментировал с
Application Wait (Now + TimeValue (0:00:10")).
К сожалению, эксперимент не сработал.
Я использую Loomчтобы записать экран, а затем воспроизвести запись и лучше посмотреть на любые сообщения об ошибках, которые появляются в CMD. К сожалению, насколько мне известно, каждое сообщение об ошибке, которое я получил, теперь исправлено.
Обновление 1
Я не знаю, действительно ли я глуп. Насколько я знаю, я предоставил правильный каталог файлов. Ссылка «Каталог файлов Windows Explorer» предназначена для скриншота, который я взял.
Microsoft Windows [Version 10.0.17134.165]
(c) 2018 Microsoft Corporation. All rights reserved.
C:\Users\HP>python C:\Users\HP\Documents\Python Scripts\EbayWebScraper.py
python: can't open file 'C:\Users\HP\Documents\Python': [Errno 2] No such file or directory
>
Каталог файлов Windows Explorer
Обновление 2
Это также не удалось.
Microsoft Windows [Version 10.0.17134.165]
(c) 2018 Microsoft Corporation. All rights reserved.
C:\Users\HP>Documents\Python Scripts\EbayWebScraper.py
'Documents\Python' is not recognized as an internal or external command,
operable program or batch file.
Обновление 3
Когда я запускаю этот код (полученный от Подождите, пока завершится работа Shell, затем отформатируйте ячейки - синхронно выполните команду) -
Sub Python2()
Dim wsh As Object
Set wsh = VBA.CreateObject("WScript.Shell")
Dim waitOnReturn As Boolean: waitOnReturn = True
Dim windowStyle As Integer: windowStyle = 1
Dim errorCode As Long
errorCode = wsh.Run("C:\Users\HP\Documents\Python Scripts\EbayWebScraper.py", windowStyle, waitOnReturn)
If errorCode = 0 Then
MsgBox "Done! No error to report."
Else
MsgBox "Program exited with error code " & errorCode & "."
End If
End Sub
Я получил ошибку -
Ошибка времени выполнения '-2147024894 (80070002)': метод «Выполнение» объекта «IWshShell3» завершился ошибкой
Обновление 4
Я смотрю на Ошибка при запуске объекта / команд оболочки через Excel VBA .
Обновление 5
Этот код наконец заработал (я получил код по ссылке в обновлении 4).
Sub Python3()
Dim wsh As Object
Set wsh = VBA.CreateObject("WScript.Shell")
Dim waitOnReturn As Boolean: waitOnReturn = True
Dim windowStyle As Integer: windowStyle = 1
Dim errorCode As Long
errorCode = wsh.Run(Chr(34) & "C:\Users\HP\Documents\Python Scripts" & "\EbayWebScraper.py" & Chr(34))
If errorCode = 0 Then
MsgBox "Done! No error to report."
Else
MsgBox "Program exited with error code " & errorCode & "."
End If
End Sub