首页 > 解决方案 > 从 Excel VBA-检查访问表是否存在/如果不存在,则创建/复制

问题描述

我正在通过 Excel 使用 VBA 中的 Access 数据库。我想检查数据库中的表是否存在,如果不存在,我想使用与该数据库中标记为“空白”的表相同的字段/定义来创建表。如有必要,我可以简单地复制/重命名空白。

我找到了一种使用以下方法检查表是否存在的方法(但不确定它是否是最好的方法)。

Set objCatalog = CreateObject("ADOX.catalog")
objCatalog.ActiveConnection = dbConn
For i = 0 To objCatalog.Tables.Count - 1
    If objCatalog.Tables.Item(i).Name = tbName Then tbExists = True
Next

这可行,但是当目标表不存在(tbExists = False)时,我正在努力寻找一种方法来使用空白的字段/定义来复制或创建新表。

标签: excelvbams-access

解决方案


这可能是通过检查表定义是否返回任何内容来检查表是否存在的另一种方法。

TableDef 对象表示基表或链接表的存储定义(仅限 Microsoft Access 工作区)。

Set exampleDB = workSpace.OpenDatabase(DatabaseName)

Set tableDefinition = exampleDB.TableDefs(TableName)
tableExists = Err.Number = 0

了解更多信息

https://docs.microsoft.com/en-us/office/client-developer/access/desktop-database-reference/tabledef-object-dao


推荐阅读