Python MS 访问 COM "Server execution failed"

Python MS Access COM "Server execution failed"

我最近不得不在计算机上重新安装 Office。我是 运行ning Windows 7 家庭高级版 x64,必须安装 Office 2016 x64(点击 运行)。由于我的 Path 环境变量,我最初遇到了一些问题(不确定什么时候搞砸了)。

我还尝试为 Access 安装 ODBC 驱动程序,并最终求助于安装 Access 2013 x64 Runtime Environment 来获取它。 2016 Database Engine x64 和 2016 Runtime Environment x64 都不想安装在我的电脑上,可能是因为我安装了 click-to-运行 Office 2016。

现在我在 Python(x64、3.5.2、Canopy 环境)中使用 COM 命令时遇到问题。我得到的具体错误是当它试图创建一个 Access.Application 对象时,错误是“[WinError -2146959355] 服务器执行失败”

我怀疑问题可能是由于现在有多个版本的 Access 所致,因为我目前有两个 "Open with" Access 数据库选项。第一个似乎是 "Office15" Access,来自运行时环境安装程序。后者是"Office16"Access,功能齐全

我怀疑通过编辑我的注册表或 "Access.Application" 字符串我可以让它工作。有什么想法吗?

这是我使用的最少代码

from comtypes.client import CreateObject

access = CreateObject('Access.Application') #Error occurs here

from comtypes.gen import Access

DBEngine = access.DBEngine
db = DBEngine.CreateDatabase('test234.mdb', Access.DB_LANG_GENERAL)
db.Close()

您不能使用 com 基于 Access 的运行时变体创建新的 Access.Application 实例。不支持在一台计算机上同时使用运行时环境和正常环境,afaik。如果需要在运行时模式下进行测试,可以使用 /runtime 开关。

但是,如果您希望使用 DAO 数据库引擎,您可以这样做:

DBEngine = CreateObject('DAO.DBEngine.120')
db = DBEngine.CreateDatabase('test234.mdb', Access.DB_LANG_GENERAL)
db.Close()