我在现有的Access表单中创建了一个公共函数,并试图从应用程序外部调用它。只是为测试这个而创建了一个非常简单的函数。
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上创建了与它的连接,并试图调用创建的函数。
连接字符串im使用:
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
将军Etiqueta是潜艇,所有其他都是的论点
您可以在access vba中创建一个模块,以任何形式或独立于形式使用它。该函数可以从外部调用,例如:
Dim appAccess As New Access.Application
appAccess.OpenCurrentDatabase ("C:My DocumentsmyDatabase.mdb")
appAccess.Run "myDatabase.test1", "Pass your argument here"
在表单后面运行代码需要打开表单。VBScript在Access常规模块中运行Sub和Function过程以及宏的示例。
Dim ObjAccess
Set ObjAccess = CreateObject("Access.application")
ObjAccess.visible = false
ObjAccess.OpenCurrentDatabase("filepathfilename.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.MsgBox的Sub。MsgBox有效,Debug.Print无效。