可以从外部调用 ms-Access 函数

it is possible to call ms-Access function from outside

我在现有的 Access 表单中创建了一个 public 函数,我试图从 application.Very 刚刚创建的简单函数之外调用它来测试它。

Public Function test1(ByVal test1 As String)
    Dim xlApp As New Excel.Application
    xlApp.Visible = False

    Dim wb As Excel.Workbook
    Set wb = xlApp.Workbooks.Add

    Dim ws As Excel.Worksheet
    Set ws = wb.Worksheets(1)
End Function

我在 Automation Anywhere 上创建了到它的连接,我正在尝试调用创建的函数。

我使用的连接字符串:

Provider=Microsoft.ACE.OLEDB.16.0;Data Source="$connection$";Jet OLEDB:Database Password="$pass$"

试过这样做,但没有成功

Select test1("test")
EXEC test1("test1")
EXECUTE test1("test1")

还有简单的'

无法在后台执行此操作,因此按照下面的建议我创建了一个子程序并从 VB 脚本

中调用它
Set appAccess = CreateObject("Access.Application")  
appAccess.OpenCurrentDatabase "RUTA ACCESS",,"CONTRASEÑA"
appAccess.UserControl = True
appAccess.Run "generarEtiqueta","numPropuesta","numExp","fileSavePath"   
appAccess.CloseCurrentDatabase
appAccess.Quit

generarEtiqueta 是副词,其他都是参数

运行 表单背后的代码需要打开表单。 VBScript 示例 运行 Access 通用模块中的 Sub 和 Function 过程以及宏。

Dim ObjAccess
Set ObjAccess = CreateObject("Access.application")
ObjAccess.visible = false
ObjAccess.OpenCurrentDatabase("filepath\filename.accdb") 
ObjAccess.Run("FunctionName")    'not finding a way to pass argument to Function
ObjAccess.Run "SubName", "argument" 'if Sub does not require argument then eliminate
ObjAccess.DoCmd.RunMacro "MacroName" 
ObjAccess.Quit
Set ObjAccess = Nothing

我测试了调用发出 MsgBox 和 Debug.Print 的 Sub。 MsgBox 有效,Debug.Print 无效。

您可以在 access vba 中创建一个模块,以任何形式或独立于形式使用它。可以从外部调用该函数:

Dim appAccess As New Access.Application 
appAccess.OpenCurrentDatabase ("C:\My Documents\myDatabase.mdb") 
appAccess.Run "myDatabase.test1", "Pass your argument here"