您可以在 Access 中使用以下内容:
Public Sub RunExcelMacro()
Dim excelApp As Object
Set excelApp = GetObject(, "Excel.Application")
excelApp.Run "HelloWorld"
End Sub
其中“HelloWorld”是 Excel 宏的名称。
GetObject(, "Excel.Application") 获取最新打开的 Excel 应用程序。这需要是运行嵌入式工作表的 Excel 应用程序。如果是另一个,它将失败。
此外,工作表需要打开,否则会失败(您可以在运行之前添加以下任一代码段将其打开)。
Me.MyOLEUnbound.Verb = 0 'vbOLEPrimary
Me.MyOLEUnbound.Action = 7
或
Me.MyOLEUnbound.AutoActivate = 1 'vbOLEActivateGetFocus
Me.MyOLEUnbound.SetFocus
为了确保没有其他 Excel 实例正在运行,如果有,则可能退出它们(注意:这些使用运行时错误和错误处理程序)
Public Function IsExcelRunning() As Boolean
IsExcelRunning = True
On Error GoTo ReturnFalse:
Dim obj As Object
Set obj = GetObject(, "Excel.Application")
Exit Function
ReturnFalse:
IsExcelRunning = False
End Function
Public Sub CloseAllExcel()
Dim obj As Object
On Error GoTo ExitSub
Dim i As Integer
'There shouldn't be more than 10000 running Excel applications
'Can use While True too, but small risk of infinite loop
For i = 0 To 10000
Set obj = GetObject(, "Excel.Application")
obj.Quit
Next i
ExitSub:
End Sub