为什么VBA函数不能正确关闭Access?

2024-09-27 23:27:19 发布

您现在位置:Python中文网/ 问答频道 /正文

这个问题与我在这里发现的上一个问题有关:Python code for running ms-Access Module Subroutine

为了解释我的问题,我将简要描述我正在尝试做的事情:

我使用python和tkinter制作了一个GUI,允许用户选择不同的搜索标准,然后将这些标准打印到一个.txt文件中。然后,python代码使用以下代码启动Access实例:

objAccess = win32com.client.Dispatch("Access.application")
objAccess.Visible = True
objAccess.OpenCurrentDatabase(filepath)
objAccess.DoCmd.RunMacro("Macro1")

宏是一个简单的“RunCode”命令,函数名为My\u Function()。My_Function()读取.txt文件,对数据库执行查询,生成报表并将报表以pdf格式保存在当前文件夹中,然后使用以下方法关闭Access:

DoCmd.Quit

我确信这一切都按预期进行,直到我将文件(python脚本和Access数据库)移到一个新文件夹。移动之后,一切都像以前一样运行,即Access打开一个窗口,根据用户输入生成报告,然后关闭。但与移动文件之前不同的是,python控制台(我在python 2.7中使用Spyder)报告以下异常:

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Python27\lib\lib-tk\Tkinter.py", line 1532, in __call__
    return self.func(*args)
  File "C:/Users/nx71/ProsjektreferanserPython/Test_final/GUI_02_norsk.py",
line 269, in buttonclick2
    objAccess.DoCmd.RunMacro("Macro1")
  File "<COMObject <unknown>>", line 3, in RunMacro
com_error: (-2147352567, 'Exception occurred.', (0, None, u'The | action was canceled.
', None, -1, -2146825787), None)

另外,在运行脚本后,我无法通过双击图标打开任何Access数据库,除非我进入任务管理器,选择single Access后台进程并“结束任务”。你知道吗

简而言之:script+macro+函数做了我希望它做的事情,但是在我移动文件之后,控制台会报告一个异常,Access进程会延迟,并阻止我打开一个新的Access实例。你知道吗

Ps:我使用的是Windows 10和MS Office 2013。你知道吗

任何帮助都将不胜感激!你知道吗


Tags: 文件用户innone数据库标准access报告
1条回答
网友
1楼 · 发布于 2024-09-27 23:27:19

谢谢你,丹,你的评论。它让我走上了正轨。我认为问题是由于VBA函数关闭了DoCmd.退出虽然objAccess在python脚本中仍然是“活动的”(请原谅我缺乏适当的术语,因为我对编程非常陌生)。你知道吗

正在删除DoCmd.退出从VBA函数的末尾添加对象。退出()之后,python代码中的RunMacro给出了所需的结果。你知道吗

我开始怀疑在我移动文件之前它是否工作正常。你知道吗

再次感谢你,丹。你知道吗

相关问题 更多 >

    热门问题