我正在尝试在.accdb文件中运行宏查询(宏执行许多查询,为数据库中的每个查询保存一个新表。)
看起来像这样:
import os
import sys
import shutil
import win32ui
import win32api,time
import win32com.client
from win32com.client import Dispatch, constants
const=win32com.client.constants
def ejecutarPY():
src_dir= r"C:\Users\irecasens\Desktop"
os.chdir(src_dir)
strDbName = 'test1.accdb'
objAccess = Dispatch("Access.Application")
objAccess.Visible = False
objAccess.OpenCurrentDatabase(strDbName)
objDB = objAccess.CurrentDb()
objAccess.DoCmd.RunMacro('GO')
objAccess.Application.Quit()
ejecutarPY()
它给出的错误是:
Traceback (most recent call last):
File "C:\EjecutarMacros.py", line 25, in <module>
ejecutarPY()
File "C:\EjecutarMacros.py", line 20, in ejecutarPY
objAccess.OpenCurrentDatabase(strDbName)
File "<COMObject Access.Application>", line 3, in OpenCurrentDatabase
File "C:\Program Files\Python\lib\site-packages\win32com\client\dynamic.py", line 287, in _ApplyTypes_
result = self._oleobj_.InvokeTypes(*(dispid, LCID, wFlags, retType, argTypes) + args)
com_error: (-2147352567, 'Ocurri\xf3 una excepci\xf3n.', (0, None, u'La base de datos ya est\xe1 abierta.', None, -1, -2146820422), None)
最后它说DB已经打开了,但它不是(它是一个本地文件,没有人有任何访问权限。里面的所有表都是本地的。)
可能是什么问题?
答案 0 :(得分:0)
我开始更改一些命令,看起来像这样:
def ejecutarPY():
src_dir= r"C:\Users\..."
os.chdir(src_dir)
strDbName = 'C:\Users\....accdb'
print(strDbName)
ac = win32com.client.Dispatch("Access.Application")
ac.Visible=False
ac.OpenCurrentDatabase(strDbName)
ac.DoCmd.RunMacro('GO')
ac.DoCmd.CloseDatabase
ac = None
ejecutarPY()
现在它运作良好。