可以从外部调用 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"
我在现有的 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"