从Access VBA运行Python脚本

时间:2014-05-28 14:37:19

标签: python vba ms-access

我找不到很多资源,但是我想让vba运行python脚本

Const pyScript = "C:\Test\Weekend_Exceptions\Weekend_Exception.py"
Dim dblRetVal As Double
dblRetVal = Shell("C:\Python34\python.exe " & pyScript)

我知道我的python脚本有效,应该输出一个文件,但不是。另外vba没有调试标志,所以我不确定我错在哪里。任何意见,将不胜感激。

2 个答案:

答案 0 :(得分:2)

你没有提供太多细节,所以我会做出一些假设

可能你的python脚本读取了一些本地文件,这会导致你的脚本引发FileNotFoundError并退出

要使测试将整个arg字符串复制到Shell,在你的情况下" C:\ Python34 \ python.exe C:\ Test \ Weekend_Exceptions \ Weekend_Exception.py&#34 ;,用Win +打开一个cmd r,粘贴并运行,不在正确的目录中应该引发相同的错误。

如果出现此问题,请使用代码

制作makestuff.bat文件
@echo off
@cd C:\Test\Weekend_Exceptions\
@C:\Python34\python.exe Weekend_Exception.py
@echo on

然后从Shell调用bat(" C:\ Place \ of \ your \ bat \ makestuff.bat")

返回更多详细信息,以便我们处理解决方案

答案 1 :(得分:0)

这是我的做法:

  1. 我创建了一个File1.bat以打开File2.py。 File1.bat中的代码是:
@echo off
@h:
@cd H:\Path\Cronus\Rangers
@C:\Python3\python.exe File2.py
@echo on

请注意,File2.py位于H:\ Path \ Cronus \ Rangers文件夹中。这就是为什么我们需要先打开它。

  1. 我在VBA中创建了一个函数来打开.bat文件:
Option Compare Database

Function MacroPythonSARH()
On Error GoTo MacroPythonSARH_Err

Call Shell("H:\Path\Cronus\Rangers\File1.bat", 1)

MacroPythonSARH_Exit:
    Exit Function

MacroPythonSARH_Err:
    MsgBox Error$
    Resume MacroPythonSARH_Exit

End Function