python - 如何在 VBA 访问中执行 python 脚本?
问题描述
下面是代码片段:
Private Sub Toggle10_Click()
Call Shell("python.exe D:\project\nc\test.py ", 1)
End Sub
但它无法打印结果。如何在 VBA 访问中执行 python 脚本?
解决方案
这是一个有趣的问题,当从 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 是一个标准的公共函数,可以很容易地在网络上找到。
推荐阅读
- python - Python switch-case 意外执行所有案例
- makefile - 如何修复'Makefile:6:***缺少分隔符。停止'。?
- javascript - React - 'react-d3-graph' 不呈现图表组件
- spring - 来自application.properties的kotlin spring注入图
- ios - Xcode 13 - 缺少 IOS 15 模拟器?
- python - Python 从 MySchoolMenus.com 获取数据
- amazon-web-services - 如果父级可能不存在,如何有条件地更新 DynamoDB 中的嵌套列表
- amazon-web-services - 如何运行 sagemaker 处理和培训工作?
- visual-studio-code - 有没有办法在 Visual Studio 代码的调试控制台中查看 DOM?
- java - 使用 +0000 将字符串日期时间转换为即时