我的问题很简单但到目前为止我还没有找到解决方案......
我在Access中创建了一个名为Form1的表单。 在这个表单中,我插入了一个“未绑定的对象框架”,这是一个新的启用宏的Excel工作表。 在Excel工作表中,我创建了一个宏,我们称之为“ExcelMacro”。
我想知道如何在Access中运行此Excel工作表中的宏,例如在我的Access宏中,运行“ExcelMacro”
我不想将Excel工作表链接到外部Excel工作簿。
你有什么想法吗?
非常感谢你的帮助!
修改
如果您需要一些其他信息:
未绑定对象框的名称:xlObject
OLE类:Microsoft Excel启用宏12
类:Excel.SheetMacroEnabled.12
工作表名称:Sheet1
答案 0 :(得分:0)
您可以在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