Удалить все командные кнопки в документе и снова добавить их

Я пытаюсь сохранить некоторые значения из всех командных кнопок в Word, затем удалить их, а затем снова добавить.

Это для целей печати.

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

Я знаю, как создавать массивы и еще много чего, все, что мне нужно понять, это синтаксис для циклического перебора командных кнопок и для добавления новых командных кнопок со значениями из старых.


person Uriel Katz    schedule 12.07.2013    source источник


Ответы (2)


Код не тестировался, но должен работать с небольшими изменениями, где это необходимо.

Кнопка удаления

For Each o In ActiveDocument.InlineShapes      
   If o.OLEFormat.Object.Name = "CommandButtonName" Then
        'Save all properties of the command button using .Top, .Left, .Width etc
        o.Delete
   End If
Next

Чтобы добавить командную кнопку (см. http://support.microsoft.com/kb/246299):

   'Add a command button to a new document
    Dim doc As Word.Document
    Dim shp As Word.InlineShape
    Set doc = Documents.Add

    Set shp = doc.Content.InlineShapes.AddOLEControl(ClassType:="Forms.CommandButton.1")
    shp.OLEFormat.Object.Caption = "Click Here"
    shp.OLEFormat.Object.Left = 100
    shp.OLEFormat.Object.Top = 100
    shp.OLEFormat.Object.Width = 255
    shp.OLEFormat.Object.Visible = True
person rags    schedule 12.07.2013
comment
вы не должны использовать такой цикл для удаления процесса. Всегда используйте For i... Step -1, если вы хотите точно удалить все элементы определенного типа! - person Kazimierz Jawor; 12.07.2013

Я полагал, что изменение размера командных кнопок до 0x0 обеспечило более элегантный вариант, который не требовал массивов и был намного быстрее.

person Uriel Katz    schedule 12.07.2013