Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Access中使用嵌入的Excel工作表运行宏_Excel_Ms Access_Vba - Fatal编程技术网

在Access中使用嵌入的Excel工作表运行宏

在Access中使用嵌入的Excel工作表运行宏,excel,ms-access,vba,Excel,Ms Access,Vba,我的问题很简单,但到目前为止我还没有找到解决办法 我在Access中创建了一个名为Form1的表单。 在此表单中,我插入了一个“未绑定对象框架”,这是一个新的启用宏的Excel工作表。 在Excel工作表中,我创建了一个宏,我们可以称之为“ExcelMacro” 我想知道如何从Access运行此Excel工作表中的宏,例如,在我的Access宏中,运行“ExcelMacro” 我不想将Excel工作表链接到外部Excel工作簿 你有什么想法吗 非常感谢你的帮助 编辑: 如果您需要一些其他信息:

我的问题很简单,但到目前为止我还没有找到解决办法

我在Access中创建了一个名为Form1的表单。 在此表单中,我插入了一个“未绑定对象框架”,这是一个新的启用宏的Excel工作表。 在Excel工作表中,我创建了一个宏,我们可以称之为“ExcelMacro”

我想知道如何从Access运行此Excel工作表中的宏,例如,在我的Access宏中,运行“ExcelMacro”

我不想将Excel工作表链接到外部Excel工作簿

你有什么想法吗

非常感谢你的帮助

编辑:

如果您需要一些其他信息:

未绑定对象帧的名称:xlObject

OLE类:已启用Microsoft Excel宏12

类别:Excel.SheetMacroEnabled.12


图纸名称:图纸1

您可以在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应用程序。如果是另一个,它将失败

此外,工作表需要打开,否则将失败(在运行此操作之前,可以添加以下任一代码段以打开它)

确保没有其他Excel实例正在运行,如果有可能,请退出它们(注意:这些实例使用运行时错误和错误处理程序)


非常感谢您的回复!!我曾尝试使用您的代码,但出现错误429:“ActiveX组件无法创建对象”。所以我想我遇到了你的问题。。。如何打开Excel工作表?您所说的是什么意思:这需要是运行嵌入式工作表的Excel应用程序。如果是另一个,它将失败。请参阅编辑后的答案。我的意思是,如果您有多个打开的Excel应用程序,代码可能会绑定错误的应用程序,那么它将无法工作。我可以提供一些代码,以便在Excel正在运行时生成错误消息,或者关闭所有打开的Excel应用程序。只需添加以下行:Me.xlObject.Action=acOLEActivate,即可正常工作。谢谢你抽出时间!我可以提供一些代码,以便在Excel正在运行时生成错误消息,或者关闭所有打开的Excel应用程序。=>我对这两个动作也很感兴趣!非常感谢你的努力!!!在过去的两天里,我一直在寻找解决方案,你救了我的命!再次感谢!
Me.MyOLEUnbound.Verb = 0 'vbOLEPrimary
Me.MyOLEUnbound.Action = 7 
Me.MyOLEUnbound.AutoActivate = 1 'vbOLEActivateGetFocus
Me.MyOLEUnbound.SetFocus
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