如何在 VBA 访问中执行 python 脚本?

Posted

技术标签:

【中文标题】如何在 VBA 访问中执行 python 脚本?【英文标题】:How to execute a python script in access by VBA? 【发布时间】:2018-05-04 07:13:02 【问题描述】:

下面是sn-p的代码:

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

但它无法打印结果。

【问题讨论】:

是真的无法打印,还是它运行的窗口在您有机会阅读之前就消失了?将您对 Python 的调用放入批处理文件中并将pause 放入下一行,然后从 VBA 运行该批处理文件。然后会发生什么? 它在你有机会阅读之前就消失了 然后使用我建议的批处理文件方法,或者让您的 Python 程序在终止之前等待击键。 谢谢我试试 【参考方案1】:

这是一个有趣的问题,当从 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 是一个标准的公共函数,可以在网络上轻松找到。

【讨论】:

以上是关于如何在 VBA 访问中执行 python 脚本?的主要内容,如果未能解决你的问题,请参考以下文章

关于如何在 Oracle 数据库中使用 VBA 执行 SQL 脚本的建议

excel中的vba是啥意思,如何用

如何以编程方式执行Microsoft Excel Office脚本?

在 VBA 中执行最小化的 Shell 对象

python如何重新执行脚本?

需要骨架代码从 PythonWin 调用 Excel VBA