如何以编程方式单击另一个工作簿中的ActiveX按钮?

时间:2012-10-31 00:01:51

标签: excel vba excel-vba activex

我有一个工作簿Wbk1,其中工作表有一个ActiveX按钮。我想从另一个工作簿Wbk2运行按钮的关联Sub。将Sub的代码复制到Wbk2是不切实际的,因为它反过来从Wbk1调用一堆函数。我尝试了以下方法:

Sub pushButton()

Dim obj As OLEObject
Dim btn As MSForms.CommandButton

For Each obj In Wkb1.Sheets("testSheet").OLEObjects
  If TypeOf obj.Object Is MSForms.CommandButton Then
    set btn=obj.Object
    debug.print btn.Caption 'used to test whether or not For loop is picking up button
    obj.Activate
    SendKeys " "
  End If
Next

End Sub

这不仅是一个不优雅的SendKeys()黑客,但它不起作用;按钮获得焦点但不会被推动。我知道For循环正在迭代对象,包括CommandButton,因为我可以拿起按钮的标题。如何从Wbk2

单击此按钮(从而运行其私有Sub)

编辑:有问题的实际文件名格式为123A_1.0-2.0.xlsm。我认为这些时期对于下面的评论和回复中发布的解决方案造成了一些麻烦,因为当我删除这些时期时,这些技术都是成功的。

1 个答案:

答案 0 :(得分:1)

如何

Application.Run (wb1.Name & "!MacroName")