我在通过许多网站挖掘帮助。我觉得这个问题没有解决办法。所以我再问一次。在
我试图调用一个需要三个参数的(public)函数。我看到我在access中成功地连接到数据库import win32com.client
acApp = win32com.client.Dispatch('Access.Application')
acApp.OpenCurrentDatabase('C:/Access_Databases/MyDatabase.accdb')
acApp.Run("MyProject.ImportingRoutine", Date, LocalPath, Adtnl)
在最后一行之后,我得到:
“result=self.oleobj.InvokeTypes(*(dispid,LCID,wFlags,retType,argTypes)+参数)
com错误:(-2147352567,“发生异常。”,(0,无,无,无,0,-2147352562),无)”
注意:参数是格式为YYYYMMDD(int64)的日期,路径是指向本地存储库的字符串,“C:/…”,yes using“/”,如果需要,VBA宏将转换为“\”,最后一个是布尔参数(但我为False和True提供0或-1)。如果我从vba excel调用它,同样的代码也能很好地工作。在
com错误-2147352562是关于参数数目不正确(为什么?)。
Python似乎无法用参数运行microsoftaccessvba宏(函数)。在
我将用Python编写VBA中宏执行的更新,但我想知道我是否做错了什么。在
^{pr2}$
这就是我正在调用的函数。在
其他函数的标题是:Public Function ImportDailyAnalyticVector(ByVal DateDbl As Long, _
Path As String, _
Optional VectName As String = "VectorAnaliticoYYYYMMDD", _
Optional ByVal Zipped As Boolean = False, _
Optional ByVal Silent As Boolean = True, _
Optional ByVal AddDate As Boolean = False) As Variant
Public Function ReadingFieldNames(ByVal tblTarget As String, _
ByVal tblFieldNames As String)
Public Function ChangeAllFieldsType(tblTarget As String, _
tblAuxiliar As String, _
fldName As String, _
fldType As String, _
fldOrder As String, _
fldSize As String, _
Optional ExVT As Variant = "''", _
Optional NM_Bussiness_Dt As String = "Vect_Date", _
Optional New_Date As Long = 0)
最后两个函数是无参数的。最初,我设计数据库的想法是最终将其迁移到SAS系统。但是考虑到我所在部门的预算很小,我决定在2月初学习Python。考虑到Python中发现的(意想不到的)优势,我放弃了SAS选项。数据库中的变量非常标准,只是在使用特殊字符时加下划线“u”。在
顺便说一下,我做了以下功能:Sub ss()
Call ImportingRoutine(20160908, _
"C:/Asset_Controlling/Repository/PIP/Vectores_Analiticos/2016/", 0)
End Sub
然后我试着打电话:acApp.Run("MyProject.ss")
但是这个也会产生同样的com错误。很容易知道Python达到了VBA代码。如果我想跑:acApp.Run("MyProject.ss()")
新错误为:
com错误:(-2147352567,“发生异常。”,(0,无,“Microsoft Access找不到过程”我的项目.ss()。“,无,-1,-2146825771),无)