マクロのクエリを.accdbファイルで実行しようとしています(マクロは、データベース内の各クエリに対して新しいテーブルを保存する多数のクエリを実行します)。MS AccessのマクロをPythonで実行する
それは次のようになります。
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が既に開いているが、それは(それがローカルではないことを言いますファイルはありません。誰もアクセス権がありません。内部のテーブルもすべてローカルです)。
何が問題なのですか?
いいですね。おめでとう?プログラミングの質問がありましたか?このサイトは質問のためのものであり、ランダムなコードをダンプする場所ではありません。何ですか?それに感心? –
追加の(**重要**)情報を提供する際にあなたの質問を編集してください。コメントに埋め込まないでください。 –
自宅で遊んでいる人のために、Google翻訳では「La base de datos yaestáabierta」と表示されています。 「データベースは現在開かれています」という意味です。 –