如何使用Python和DoCmd执行多个Microsoft Access宏

时间:2018-06-15 14:15:59

标签: python ms-access

美好的一天,

我正在使用地质建模软件来创建需要导入到Access的csv文件,其中宏导入它,运行一些采石场并最终将其作为csv导出以再次导入地质软件。所有这一切都很顺利。

我使用python作为地质软件和Microsoft Access之间的粘合剂。我使用下面的代码来调用Access中的宏。

def runAccess(path):
    import win32api,time
    from win32com.client import Dispatch

    strDbName = str(path)
    objAccess = Dispatch("Access.Application")
    objAccess.Visible = False
    objAccess.OpenCurrentDatabase(strDbName)
    objDB = objAccess.CurrentDb()
    objAccess.DoCmd.RunMacro('Run_Process')
    objAccess.Application.Quit()
    return;

问题是当我尝试同时运行另一个实例以节省一些时间时(这是因为每个场景需要相当长的时间,其中有10个)。当第二个实例运行时,它失败并出现以下错误:

  

:( -2147352567,'发生异常。',   (0,无,'你已经打开了数据库。',无,-1,   -2146820421),无):文件“”,第407行,

     

文件“”,第208行,在runAccess中

     

文件“”,第3行,in   OpenCurrentDatabase方法

     

文件   “C:\用户\ Gac2611 \应用程序数据\漫游\ Python的\ Python35 \站点包\ win32com \客户端\ dynamic.py”   第287行,在 ApplyTypes 中       result = self。 oleobj .InvokeTypes(*(dispid,LCID,wFlags,retType,argTypes)+ args)

所以我不确定为什么它不会将Access DB作为新实例打开,因为在路径变量中我给它一个完全独立的Access文件的路径

0 个答案:

没有答案