from win32com.client import Dispatch
oAccess = Dispatch("Access.Application")
oAccess.Visible = False
oAccess.OpenCurrentDatabase(my_db)
oDB = oAccess.CurrentDB
for tbl in oDB.TableDefs:
print(table.Name)
tbl.RefreshLink
我还做过:
for tbl in oAccess.TableDefs:
print(table.Name)
tbl.RefreshLink
错误:'function'对象没有'TableDefs'属性
我开始了解如何使用win32com操作Windows,但出于某种原因,它看起来像"。tabledefs"不认可。我是不是走错路了?
我知道这可以在VBA中完成。我的任务是把所有的东西都换成Python。
您的第一个错误,在这里,是VBA知道CurrentDb
是一个方法,并且不能将方法分配给变量,所以它调用该方法。
然而,Python在将方法赋值给变量时没有任何问题,所以就这样做了。这意味着您需要使用括号来调用方法:
oDB = oAccess.CurrentDb()
这修复了当前的问题(同样适用于tbl.RefreshLink
,这可能应该是tbl.RefreshLink()
)。
此外,您从未定义table
,只定义tbl
,因此您可能需要print(tbl.Name)
。