使用VBA删除MS Word中的特定ActiveX对象,而不会影响其他按钮

时间:2019-05-06 11:10:38

标签: vba ms-word

我正在尝试删除两个特定的对象,一个名为ComboBox1的组合框和一个名为btnselect的按钮。 单击btnselect时,代码将运行。

我编写的代码是这样的:

Dim obj1 As Object
For Each obj1 In ActiveDocument.InlineShapes
        If obj1.OLEFormat.Object.Name = "ComboBox1" Then
        obj1.Delete
    End If
Next obj1
Dim obj2 As Object
For Each obj2 In ActiveDocument.InlineShapes
        If obj2.OLEFormat.Object.Name = "btnselect" Then
        obj2.Delete
    End If
    Next obj2

我还尝试了以下代码:

ActiveDocument.InlineShapes(1).Delete 
ActiveDocument.InlineShapes(1).Delete

代码工作和指定的ActiveX对象均被删除。 但是,运行此代码后,其他附加了vba代码的按钮将不起作用。 更具体地说,仅当基于模板创建新文档时,才会出现此问题。如果我直接从模板运行按钮,那没有问题。没有这些代码,按钮将在基于模板的新文档中按预期工作。
您能帮我找到一种在不干扰其他对象的情况下删除这两个对象的方法吗?

最新编辑:我已尽可能缩小代码范围,以便问题仍然存在。

Private Sub btnselect_Click()
ActiveDocument.InlineShapes(1).Delete
End Sub
Private Sub btnSubmit_Click()
MsgBox "Working"
End Sub
Private Sub btnPrint_Click()
MsgBox "Working"
End Sub

该模板具有三个按钮btnselectbtnSubmitbtnPrint,其中包含上述VBA代码。 我想删除基于模板的新文档中的btnselect

如果我基于模板创建一个新文档,然后单击btnselect,则该按钮将被删除,但是其他两个按钮不再起作用。

如果我打开模板并单击btnselect,则该按钮将被删除,并且其他两个按钮正在工作(它们正在显示消息)。

1 个答案:

答案 0 :(得分:0)

要使其他按钮正常工作,请不要删除任何按钮。如果删除它,则ActiveDocument中的所有其他按钮将失去对模板中其VBA代码的引用。

不幸的是,您不能简单地隐藏命令按钮,但可以禁用它们并将其大小设置为1x1点:

With ActiveDocument.InlineShapes(1)
    .OLEFormat.Object.Enabled = False
    .Width = 1
    .Height = 1
End With