【问题标题】:Run access module from Excel VBA从 Excel VBA 运行访问模块
【发布时间】:2015-04-17 09:56:08
【问题描述】:

我正在尝试在 Access 上运行此模块:

Public Sub Retriever_P(path)

DoCmd.TransferSpreadsheet acImport, 10, "Product_Details", path, True, ""

End Sub

来自 Excel 中的此 VBA 代码

 Private Sub CommandButton210_Click()

Dim appAccess As Access.Application
Set appAccess = New Access.Application
Dim Target As String: Target = ThisWorkbook.Sheets("CODE").Cells(8, 4).Value
Dim path As String: path = ThisWorkbook.Sheets("CODE").Cells(5, 13).Value
appAccess.OpenCurrentDatabase Target
appAccess.Visible = True
appAccess.DoCmd.SetWarnings False
appAccess.UserControl = True
appAccess.DoCmd.OpenQuery "Clean Product_Details"
appAccess.Run "Retriever_P", path
appAccess.CloseCurrentDatabase

End Sub

但我收到此错误 2517,“Microsoft Access 找不到过程“Retriever_P”

Excel 代码是一个更大的宏的一部分,该宏创建一个数据库,然后将其发送给访问。 有什么想法吗?

提前谢谢你!

【问题讨论】:

  • 我认为,Run 方法接受一个函数,而不是一个子。因此,尝试将 Retriever_P 更改为函数。然后再试一次。还要确保将函数放置在标准模块中,而不是放在表单后面。
  • 我试过了,还是一样的错误!模块是使用 Access 2013 创建的转换宏。我创建了宏,然后将其转换为 VBA 并进行了编辑,因此将其放在模块下。
  • 这不是 sub vs function 的问题。我尝试使用 sub 它可以工作。尝试将 CommandButton210_Click 更改为 Private Sub CommandButton210_Click() Dim appAccess As Access.Application Set appAccess = CreateObject("Access.Application") appAccess.OpenCurrentDatabase ThisWorkbook.Sheets("CODE").Cells(5, 13).Value, False appAccess .Run "Retriever_P", "PATH..." Set appAccess = Nothing End Sub 见以下链接:msdn.microsoft.com/en-us/library/office/ff193559.aspx

标签: excel ms-access vba


【解决方案1】:

我找到了解决方案:问题是子名称与模块名称相同。我不知道它必须有所不同,但我希望有人会觉得这很有用! 谢谢大家的回答!

【讨论】:

    【解决方案2】:

    我在运行一个简单的测试时遇到了另一个问题,该测试试图通过 Excel 过程在空数据库(VBA 代码除外)中运行 Access VBA 函数。如果没有任何其他对象(表/表单/等),则无法找到 Access VBA 函数。一旦我放入一个名义表,从 Excel VBA 调用 Access VBA 函数就成功了。拥有空数据库的情况并不常见,但正如我所说,我只是在进行试验,看看该方法是否有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-27
      • 1970-01-01
      • 2022-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-14
      相关资源
      最近更新 更多