【问题标题】:Why does CurrentDb return the error: "object required"?为什么 CurrentDb 返回错误:“需要对象”?
【发布时间】:2021-09-09 17:58:41
【问题描述】:

我想在 Excel VBA 中编写一个小代码来检查查询是否已经存在。那里已经有一堆自定义功能,但似乎没有任何效果。这一切似乎都归结为一件事:

"db = CurrentDb" 返回一个错误,我不知道为什么。

代码如下:

Sub Test()
Dim qdf As DAO.QueryDef
Dim db As DAO.Database

Set db = CurrentDb 'This line returns the error (object required)

For Each qdf In db.QueryDefs
  If qdf.Name = "QueryName1" Then
    msgbox ("query already exists")
     Exit For
  End If
Next
End Sub

编辑:猜猜这与我使用 ADO 的事实有关吗?加载 DAO 库只会返回一个 DLL 错误,所以我只是坚持使用 ADO..

有人知道如何在 ADO 中执行此操作吗?

【问题讨论】:

  • 我刚刚在 MS Access 中运行了您的代码,它按预期工作。 CurrentDb 是一个 Access 应用程序方法。如果您尝试在 Excel 中使用它,那么您需要澄清您的问题。
  • 感谢您的回答。是的,我正在尝试在 Excel 中使用它。您的回答已经有所帮助,我不知道 CurrentDb 是一个未在 Excel 中定义的特定于 Access 的全局变量。那么我该如何解决这个问题?就像我说的,由于某种原因我无法打开 DAO 3.6 数据库。它只是返回:“加载 DLL 时出错”。我也不能使用 Set Db = OpenDatabase("C:\Users\Tim\Databases\blabla.mdb") 因为我想在具有不同路径的多台笔记本电脑上使用代码。最后我想做的就是检查一个查询是否已经存在..
  • Access 是一个数据库。 Excel 不是。 CurrentDb 在 Excel 中毫无意义。你的查询定义在哪里?你的表定义?没有。这就像尝试在 excel 中使用 MS Word 目录对象一样。这没有道理。你想做什么?
  • 我明白你现在要做什么了。通过这个例子,你应该能够使用ActiveWorkbook.Queriesstackoverflow.com/questions/61767220/…来检查一个excel查询是否存在

标签: vba


【解决方案1】:

好的,首先感谢您的快速帮助。这个链接帮助了我很多: a query with the name already exists

因此,为了提供更多上下文,我正在 excel 中构建一个宏,该宏循环遍历 URL (API) 的动态列表并为每个 URL 构造一个查询。查询的名称基于其内容。 问题是:如果查询(名称)已存在,则构造返回错误:具有此名称的查询已存在。

我想做的是首先检查查询是否存在,如果存在:跳过构造。

解决方案比我想象的要容易得多。我只需要编写以下代码:

On Error Resume Next

直接在“ActiveWorkbook.Queries.Add Name:=QryName, Formula:= _....”之前 - 部分。因此,如果 AddQuery 部分返回错误,它就会被跳过。

我想我太忙于尝试编写一个函数来检查是否存在查询......我的错^^

【讨论】:

  • 请在您的回答中提供更多详细信息。正如目前所写的那样,很难理解您的解决方案。
猜你喜欢
  • 2013-10-14
  • 1970-01-01
  • 2019-10-29
  • 2017-04-26
  • 2012-04-23
  • 1970-01-01
  • 1970-01-01
  • 2016-03-17
  • 1970-01-01
相关资源
最近更新 更多