【发布时间】:2020-07-13 18:58:13
【问题描述】:
我在 excel 中有一个子程序,需要从访问权限中调用。 Excel vba
Public Function testme(value As String) As String
Dim xlpath As String
Dim concate As String
xlpath=ActiveWorkbook.Path
value = ActiveWorkbook.Name
concate = xlpath & "\" & value
Let testme = concate
End Function
我需要在其中一种访问方法中调用上述方法。我该如何调用它。
Sub Connect1()
Dim xlApp As Variant
'Set xlApp = CreateObject("Excel.Application")
'this will launch a blank copy of excel; you'll have to load workbooks
'xlApp.Visible = True
Set xlApp = GetObject(, "Excel.Application")
Let ans = xlApp.Application.Run("MyXLVBAProject.MyXLVBAModule.testme", 400)
'here ans has the string "500"
End Sub
【问题讨论】:
-
access是如何打开excel工作簿的?
-
您可能希望从 Excel 的对象模型中使用 Application.Run。您向它传递一个字符串,例如“QuickRDA.JavaCallBacks.GetQuickTab”作为宏名称,其中 QuickRDA 是 Excel VBA 项目的名称,JavaCallBacks 是该 VBA 项目中 VBA 模块的名称,GetQuickTab 是该 VBA 模块中的函数。
-
如果可以的话请给我代码示例
-
在上面显示的代码示例中,您将 flname 参数作为字符串传递,然后为其分配另一个值,将其清除。 (此外,它也不会被使用。)此外,您省略了将返回值分配给函数 passfilename。也许您希望
passfilename = ActiveWorkbook.Path返回路径? -
好的,我看到你的更新了。在我看来,您不需要从访问权限将参数传递给
testme。所以,我建议你把value从形参改成局部变量。您也可以在调用中省略实际参数。我将更新我的答案,向您确切说明我的意思。