我没有任何 VBA 经验,所以我有点挣扎。
所以我有这个 Python 代码,它可以进行 API 身份验证,然后将 API 调用中的 JSON 转换为 excel 文件并保存。
Sub RunPythonScriptQuery()
Dim objShell As Object
Dim PythonExePath As String, PythonScriptPath As String
ActiveWorkbook.Save
ChDir ActiveWorkbook.Path
Set objShell = VBA.CreateObject("Wscript.Shell")
PythonExePath = """C:\Users\me\AppData\Local\Programs\Python\Python39\python.exe"""
PythonScriptPath = """C:\Users\me\vbatest\parse.py"""
objShell.Run PythonExePath & PythonScriptPath
MsgBox ("File parsed!")
End Sub
我想做的是点击excel上的一个按钮并执行整个操作。即使我没有收到任何错误,它也没有根据我的需要保存文件。你知道我如何用 VBA 解决这个问题吗?
此代码对我有用。
在 Excel VBA 中 -
Option Explicit
Sub sbRunPythonScriptHello()
Dim objShell As Object
Dim PythonExePath As String
Dim PythonScriptPath As String
Set objShell = VBA.CreateObject("Wscript.Shell")
PythonExePath = """C:\Users\david\AppData\Local\Programs\Python\Python311\python.exe"""
PythonScriptPath = """C:\Users\david\Desktop\py_HelloWorld.py"""
objShell.Run PythonExePath & PythonScriptPath
MsgBox ("Hello World Python from VBA")
End Sub
这是 VBA 调用的 Python 代码 -
来自 - digitalocean.com/community/tutorials/python-wait-time-wait-for-input
import time
sec = input('Let us wait for user input. Let me know how many seconds to sleep now.\n')
print('Going to sleep for', sec, 'seconds.')
time.sleep(int(sec))
print('Enough of sleeping, I quit!')
time.sleep(int(sec))
这是使用 Windows 11 -
Windows 11 家庭版 22H2版本 安装于u200e20/u200e01/u200e2023 操作系统版本 22621.1413
和 Excel -
适用于 Microsoft 365 MSO 的 Microsoft® Excel®(版本 2303 内部版本 16.0.16227.20202)64 位
使用 Python -
Python 3.11.2(tags/v3.11.2:878ead1,2023 年 2 月 7 日,16:38:35)[MSC v.1934 64 位 (AMD64)] 在 win32 上