我在Excel中从vba调用python脚本时遇到问题。我阅读了解决同一问题的其他线程,但是当我运行代码时,Python屏幕闪烁然后消失。仅供参考,我为Windows 10下载了python 3.6.5并将其添加到PATH。有人能告诉我为什么屏幕闪烁以及我能做些什么来解决它?感谢
Sub Run_python()
Dim Ret_Val
Dim args As String
args = "C:\Users\opera\AppData\Local\Programs\Python\Python36\Tools\scripts\db2pickle.py"
Ret_Val = Shell("C:\Users\opera\AppData\Local\Programs\Python\Python36\python.exe" & " " & args, vbNormalFocus)
If Ret_Val = 0 Then
MsgBox "Couldn't run python script!", vbOKOnly
End If
End Sub
答案 0 :(得分:0)
屏幕闪烁并快速返回,因为程序失败或快速完成
您是否尝试从命令行运行它以查看发生了什么?
如果运行正常,您可以强制命令窗口保持打开状态,以便您可以阅读从Shell命令使用python时发生的情况
Call Shell("cmd.exe /S /K" & "C:\Users\opera\AppData\Local\Programs\Python\Python36\python.exe" & " " & args, vbNormalFocus)
/S Modifies the treatment of string after /C or /K
/C Carries out the command specified by string and then terminates
/K Carries out the command specified by string but remains
答案 1 :(得分:0)
我按照建议尝试了以下方法:
SELECT
"All Accounts" as adAccount,
(SELECT SUM(spend)
FROM facebookReports
WHERE date BETWEEN DATE_SUB(CONVERT_TZ(NOW(),@@session.time_zone,'US/Pacific'),INTERVAL 2 DAY) AND DATE_SUB(CONVERT_TZ(NOW(),@@session.time_zone,'US/Pacific'),INTERVAL 1 DAY)
) as spend_today,
(SELECT SUM(spend)
FROM facebookReports
WHERE date BETWEEN DATE_SUB(CONVERT_TZ(NOW(),@@session.time_zone,'US/Pacific'),INTERVAL 3 DAY) AND DATE_SUB(CONVERT_TZ(NOW(),@@session.time_zone,'US/Pacific'),INTERVAL 2 DAY)
) as spend_yesterday,
(SELECT SUM(revenue)
FROM facebookReports
WHERE date BETWEEN DATE_SUB(CONVERT_TZ(NOW(),@@session.time_zone,'US/Pacific'),INTERVAL 2 DAY) AND DATE_SUB(CONVERT_TZ(NOW(),@@session.time_zone,'US/Pacific'),INTERVAL 1 DAY)
) as rev_today,
(SELECT SUM(revenue)
FROM facebookReports
WHERE date BETWEEN DATE_SUB(CONVERT_TZ(NOW(),@@session.time_zone,'US/Pacific'),INTERVAL 3 DAY) AND DATE_SUB(CONVERT_TZ(NOW(),@@session.time_zone,'US/Pacific'),INTERVAL 2 DAY)
) as rev_yesterday,
(SELECT ROUND(SUM(revenue)/SUM(spend),2)
FROM facebookReports
WHERE date BETWEEN DATE_SUB(CONVERT_TZ(NOW(),@@session.time_zone,'US/Pacific'),INTERVAL 2 DAY) AND DATE_SUB(CONVERT_TZ(NOW(),@@session.time_zone,'US/Pacific'),INTERVAL 1 DAY)
) as roas_today,
(SELECT ROUND(SUM(revenue)/SUM(spend),2)
FROM facebookReports
WHERE date BETWEEN DATE_SUB(CONVERT_TZ(NOW(),@@session.time_zone,'US/Pacific'),INTERVAL 3 DAY) AND DATE_SUB(CONVERT_TZ(NOW(),@@session.time_zone,'US/Pacific'),INTERVAL 2 DAY)
) as roas_yesterday
运行脚本后,命令窗口刚刚闪烁。 因此,我只是在我的python脚本的最后一行添加了input('Press any key to exit')语句,现在该窗口保持不变。