如何在 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 脚本的建议