如果表不在Excel VBA的Access数据库中

时间:2013-11-14 13:29:29

标签: excel vba excel-vba access-vba

如何通过Excel vba检查给定表(称为Items)是否在特定的Access数据库中。

我建立了从excel表到两个不同数据库的连接,[A]& [B],通过Excel vba和我的其他代码工作正常。

到目前为止,我能在网上找到的最接近的是:

If IsNull(DLookup("[Name]", "MSysObjects", "[Name]='Items'")) Then

此代码未指定我要搜索的数据库。有没有办法只有在数据库[B]中找不到表Items时才能编写语句来运行?这段代码将如何编写?

引用数据库没问题。我的大多数代码都是从Excel运行的SQL,我能够在特定于每个数据库的字段中引用各种条目。我只是想找一行“如果 这个数据库中的表,那么创建一个 名称的表”。是否有可以编写的SQL字符串,甚至是try ... catch方法?

非常感谢任何帮助

1 个答案:

答案 0 :(得分:0)

您可以使用On Error技术(它有点像try...catch,但后者在VBA中不存在)。例如:

On Error GoTo whoa
Set db = OpenDatabase(DBFullName) ' use the name of [A] or [B] here.
Set rs = db.OpenRecordset( *** your expression to get something from db *** )
' if you get past this line, then reading the data went OK
MsgBox "Everything is fine"
' it is possible that the above will not throw an error, but returns something "empty"
' I would put a breakpoint in the code and step through, then examine `rs`
' both for the case where the table exists, and where it doesn't
Exit Function
whoa:
MsgBox "Something went horribly wrong: error is " & Err.Description
' this is where you would go if you were not able to get the data

显然你会为[A]和[B]这样做,以找出表存在的位置(如果有的话)。我的机器上没有Access,所以我不能轻易地为你测试,抱歉。