首页 > 解决方案 > 如何在 VBA 访问中执行 python 脚本?

问题描述

下面是代码片段:

Private Sub Toggle10_Click()
    Call Shell("python.exe D:\project\nc\test.py ", 1)
End Sub

但它无法打印结果。如何在 VBA 访问中执行 python 脚本?

标签: pythonvbams-access

解决方案


这是一个有趣的问题,当从 Excel、Access、Word 等 MS Office 应用程序中执行 Office 自动化流程时会出现。当 Office 应用程序 VBA 调用 Shell 命令时,就像上面那样,它实际上是在要求 Windows 操作系统对目标资源执行系统调用,在这种情况下是特定的 Python 可执行文件。在设备上,Office 应用程序将继续执行,Python 代码并行执行……Office 没有等待 Python 的返回,这两个进程从未真正连接。

MS Access 特别容易受到这种情况的影响。要解决此问题,必须停止 MS Access 的执行,以允许 Python 完成其任务并返回结果。有三种方法可以做到这一点:

Excel 中的内在等待函数。– 在 MS Access 中不起作用

Windows(系统)睡眠功能。– Sleep ####,其中#### 是毫秒数:Sleep 1000

Windows(系统)GetTickCount 函数。- 通过 WaitAsync 异步暂停(####,毫秒)

对于 MS Access,迄今为止最容易使用的是内在的睡眠功能。WaitAsync 是一个标准的公共函数,可以很容易地在网络上找到。


推荐阅读