Word 2013 - VBA - принять все изменения в выделенном фрагменте

Я пытаюсь создать макрос, чтобы принять все изменения в выделенном фрагменте. Я использовал средство записи макросов, и он сгенерировал следующий код ниже (его также можно найти по адресу https://docs.microsoft.com/en-us/office/vba/api/word.revisions.acceptall)

Selection.Range.Revisions.AcceptAll

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

введите описание изображения здесь

введите описание изображения здесь

Но если я использую встроенные кнопки в группе «Изменения» на вкладке «Обзор», мне не нужно физически выделять всю букву. Мне просто нужно выбрать любую часть изменения, и он примет изменение.

введите описание изображения здесь

введите описание изображения здесь

Почему версия макроса не работает так, как вариант пользовательского интерфейса?


person Mohamad Bachrouche    schedule 22.01.2021    source источник
comment
Код работает при условии, что вы выбрали весь диапазон соответствующих ревизий.   -  person macropod    schedule 22.01.2021
comment
Я подумал, но это все еще не объясняет, почему пользовательский интерфейс будет работать с частичным диапазоном, но макрос будет работать только с полным диапазоном, когда средство записи макросов и пользовательский интерфейс выдают идентичный код.   -  person Mohamad Bachrouche    schedule 26.01.2021


Ответы (1)


Это странное поведение. Пользовательский интерфейс должен делать что-то вроде того, что показано ниже, но тот, кто создал макрорекордер, пропустил это.

Public Sub AcceptSelection()
    
    Dim rev As Revision
    
    For Each rev In Selection.Range.Revisions
        rev.Accept
    Next rev
    
End Sub

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

person Dick Kusleika    schedule 22.01.2021
comment
Это работает! Спасибо! Я запустил средство записи макросов, и он дал мне приведенный выше код. Но когда я запустил макрос, он не работал так, как пользовательский интерфейс, из которого я записывал (частичный или полный). Поэтому я пошел на веб-сайт Microsoft, чтобы проверить, не пропустил ли я что-нибудь, и там был указан тот же код, который я записал, так что я был полностью в тупике. - person Mohamad Bachrouche; 26.01.2021