Я пытаюсь автоматизировать Microsoft Access 2016 с помощью Python. Я использую пакет pywin32
из здесь . Это мой Python код:
import win32com.client
ac = win32com.client.Dispatch("Access.Application")
print(ac.Name)
print(ac.CurrentProject.Path)
print(ac.Run('test'))
и VBA:
Public Function Test() As String
Test = "test123"
End Function
Доступ к Name
и CurrentProject.Path
работает нормально, но вызов Run
завершается неудачно с :
Traceback (most recent call last):
File ".\python_access\main.py", line 6, in <module>
print(ac.Run('test'))
File "<COMObject Access.Application>", line 8, in Run
File "C:\Users\Gilbert\.virtualenvs\python_access-TxDlns7u\lib\site-packages\win32com\client\dynamic.py", line 287, in _ApplyTypes_
result = self._oleobj_.InvokeTypes(*(dispid, LCID, wFlags, retType, argTypes) + args)
pywintypes.com_error: (-2147352567, 'Exception occurred.', (0, None, None, None, 0, -2146771191), None)
PS C:\Users\Gilbert\development\python_access> pipenv run py .\python_access\main.py
Microsoft Access C:\X-Ware Limited\TaskList
Traceback (most recent call last):
File ".\python_access\main.py", line 6, in <module>
print(ac.Run('test'))
File "<COMObject Access.Application>", line 8, in Run
File "C:\Users\Gilbert\.virtualenvs\python_access-TxDlns7u\lib\site-packages\win32com\client\dynamic.py", line 287, in _ApplyTypes_
result = self._oleobj_.InvokeTypes(*(dispid, LCID, wFlags, retType, argTypes) + args)
pywintypes.com_error: (-2147352567, 'Exception occurred.', (0, None, None, None, 0, -2146771191), None)
Я видел предложенные здесь обходные пути: Python код для запуска подпрограммы модуля ms-Access , но в моем случае мне нужно передать параметры в функцию и прочитать возвращаемое значение, поэтому использование макроса не будет работать.