Удаление определенных объектов ActiveX в MS Word с использованием VBA без влияния на другие кнопки - PullRequest
1 голос
/ 06 мая 2019

Я пытаюсь удалить два конкретных объекта, выпадающий список с именем 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

Шаблон имеет три кнопки btnselect, btnSubmit и btnPrint и содержит вышеуказанный код VBA. Я хочу удалить btnselect в новом документе, который основан на шаблоне.

Если я создаю новый документ на основе шаблона и нажимаю btnselect, кнопка удаляется, но затем две другие кнопки больше не работают.

Если я открою шаблон и нажму btnselect, кнопка будет удалена, а две другие кнопки будут работать (они отображают сообщения).

1 Ответ

0 голосов
/ 06 мая 2019

Чтобы другие кнопки работали, не удаляйте никакие кнопки. Если вы удалите его, все остальные кнопки из вашего ActiveDocument потеряют свою ссылку на свой VBA-код в вашем шаблоне.

К сожалению, вы не можете просто скрыть командные кнопки, но вы можете отключить их и установить их размер в 1x1 баллов:

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