Прочитайте историю отменить в VBA -- vba поле с участием ms-word поле с участием undo пол Связанный проблема

Read undo history in VBA


5
vote

проблема

русский

У меня есть довольно простой кусочек VBA в Word 2003, который меняет шрифт документа на «экономный шрифт» (длинную историю) и вызывает диалоговое окно печати. ​​

Когда пользовательский ударит отменить или хорошо, код делает «отменить», чтобы вернуть изменение.

Проблема в том, что иногда, когда я нажимаю «ОК», чтобы распечатать документ, Два действия должны быть отменены («Изменение шрифтов» и «Обновление полей»). Я не могу предсказать, когда это произойдет.

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

<Сильные> Редактировать: Окончательный код (снимок):

 <код> ActiveDocument.Range.Bookmarks.Add ("_tempEcoUndoStart_")  ActiveDocument.Content.Font.Name = "Nanonymus Eco Sans"  Dialogs(wdDialogFilePrint).Show  While ActiveDocument.Bookmarks.Exists("_tempEcoUndoStart_")      ActiveDocument.Undo  Wend   
Английский оригинал

I have a fairly simple bit of VBA in Word 2003 that changes the document's font to an 'eco font' (long story), and brings up the Print dialog.

When a user hits Cancel or OK, the code does an 'undo' to revert the change.

The problem is, sometimes when I press "OK" to print the document, two actions need to be undone ('font change', and 'update fields'). I can't seem to predict when this will happen.

Is there any way of reading the last item in Word's undo buffer? That way I can just keep pressing undo until the font change has been completed.

Edit: Final code (cut down):

ActiveDocument.Range.Bookmarks.Add ("_tempEcoUndoStart_")  ActiveDocument.Content.Font.Name = "Nanonymus Eco Sans"  Dialogs(wdDialogFilePrint).Show  While ActiveDocument.Bookmarks.Exists("_tempEcoUndoStart_")      ActiveDocument.Undo  Wend 
</div
        
 
 

Список ответов

4
 
vote
vote
Лучший ответ
 

Вы можете использовать трюк, чтобы иметь «транзакционную», подобную отменам в Word: в начале макроса поместите специальную закладку на весь документ. Вы должны снова удалить эту закладку, когда вы закончите с вашим макросом. Теперь при вызове команды Undo повторите отменить, пока в документе есть специальная закладка.

Следующий связанный вопрос имеет детали:

Могу ли я создать Отменить транзакцию в Word или Excel? (VSTO)

 

You can use a trick to have a 'transactional'-like undo in Word: At the beginning of the macro place a special bookmark on your entire document. You should remove this bookmark again when you are done with your macro. Now, when calling the Undo command, repeat the undo while there is your special bookmark in the document.

The following related question has the details:

Can I create an undo transaction in Word or Excel? (VSTO)

</div
 
 
0
 
vote

Я не испытывал, но, возможно, вы можете использовать неядер перед вашими действиями, и рассчитывать на отмену после?

 <код> ActiveDocument.UndoClear ActiveDocument.Undo 2   
 

I have not tested, but perhaps you can use UndoClear before your actions, and a count on undo after?

ActiveDocument.UndoClear ActiveDocument.Undo 2 
</div
 
 
 
 

Связанный проблема

0  Несоответствие типов при использовании оператора CASE для только видимых ячеек  ( Receiving type mismatch when using case statement for only visible cells ) 
Я получаю ошибку на смелой линии относительно несоответствия типа. Заявление о случаях относится к значению ячейки, которое только видно, но я не уверен, если...

0  Ссылка целого класса .NET в доступе 2013 с DLL  ( Reference an entire net class in access 2013 with a dll ) 
Так что в последнее время я создал DLL в C # для моего доступа к приложению Frontend 2013, который обрабатывает почту через SMTP и имеет некоторую проверку, п...

1  Regex / Способ для комментариев японского текста  ( Regex method to comment a japanese text ) 
У меня есть большой текстовый файл формата ниже. <код> { "glossary": { "title": "example glossary", cm="私は今プログラミングーをしています"; "te...

0  Есть ли возможность выбора определенного диапазона данных на Excel с использованием кода VBA на основе критериев столбцов?  ( Is there a possibility of selecting a specific range of data on excel using vba ) 
В моем наборе данных у меня есть столбец с большим количеством адресов электронной почты, некоторые повторяющиеся, некоторые нет. Я вставил новый столбец вп...

0  Коробка комбо выбирая первую запись и не определенную запись  ( Combo box selecting first record and not the defined record ) 
Первый раз спрашиваю здесь, потому что я втухнул! У меня есть форма доступа MS с 2 комбинированными коробками: First Combo Box (Cbopub) Выбор издателя, кото...

14  Добавление элементов управления в рамку в Excel Userform с VBA  ( Adding controls to a frame in an excel userform with vba ) 
Мне нужно динамически создавать этикетки и кнопки, а затем добавлять их в кадр в рамках пользователя. Как мне это сделать? Похоже, это должно быть проще, чем...

-1  Auto запустить два кода VBA, когда открывается книжная книга Excel  ( Auto run two vba codes when an excel workbook opens ) 
У меня есть два кода VBA, я хотел бы запустить, когда открывается рабочая книга Excel. <код> Sub test2() Dim c As Range For Each c In Range("A1:A1")...

1  Что вызывает эту ошибку SOAPMAPPER в вызове SOAP VBA?  ( Whats causing this soapmapper error in vba soap service call ) 
Я пытаюсь употреблять веб-сервис на базе Java от кода VBA в рабочей книге Excel 2003. Есть два метода доступны. Один извлекает данные, другие данные загрузки....

0  Выбор определенных флажков с использованием главного флажка  ( Selecting specific check boxes using a master check box ) 
Я пытаюсь создать макрос, чтобы выбрать все флажки определенного столбца. Например, у меня есть 10 критериев, установите флажки на столбце с главным установит...

0  VBA: Код паузы для различных длин времени с Doevents  ( Vba code pauses for varying lengths of time with doevents ) 
У меня есть процедура, которая генерирует отчеты на основе ввода пользователей, предусмотренной пользовательской формой. Я реализовал обработку ошибок, как сл...

0  VBA Help - скрипт для запуска 3 макросов через функцию вызова не будет работать все макросы  ( Vba help script to run 3 macros via call function will not run all macros ) 
Извинения, если этот вопрос элементарной, я не отлично в VBA. У меня есть 3 отдельных кода, которые я хочу запустить один за другим, нажав кнопку. Поэтому у м...

1  Outlook 2013: выберите несколько электронных писем и автозагрузка с помощью шаблона  ( Outlook 2013 select multiple emails and autoreply using template ) 
Я пытаюсь получить этот код для работы. Я хочу выбрать несколько электронных писем из моего входящего и отправить автоматический ответ с помощью шаблона. ...

1  Сравните несколько пар документов  ( Compare multiple pairs of docs ) 
Я профессор в английском отделе, и мои состав студенты часто пишут множественные черновики их сочинений. Я использую Word 2010 для отслеживания их изменений. ...

0  VBA для извлечения даты из файла  ( Vba to extract date from file path ) 
У меня есть серия файлов для отслеживания в электронной таблице Excel. Они хранятся в папках по дате. Иногда файл изменен, затем повторно повторно, поэтому им...

2  Как я могу найти слово в ячейке в Excel VBA и окрасить его красным (только слово, а не всю ячейку), используя код VBA?  ( How can i find a word in a cell in excel vba and color it red only the word not ) 
Я пишу код в Excel, часть которой необходимо найти слово в ячейке (не чувствительно к регистру) и окрасить его красным (только слово не все ячейка). Например...

Связанный проблема

0  Несоответствие типов при использовании оператора CASE для только видимых ячеек 
0  Ссылка целого класса .NET в доступе 2013 с DLL 
1  Regex / Способ для комментариев японского текста 
0  Есть ли возможность выбора определенного диапазона данных на Excel с использованием кода VBA на основе критериев столбцов? 
0  Коробка комбо выбирая первую запись и не определенную запись 
14  Добавление элементов управления в рамку в Excel Userform с VBA 
-1  Auto запустить два кода VBA, когда открывается книжная книга Excel 
1  Что вызывает эту ошибку SOAPMAPPER в вызове SOAP VBA? 
0  Выбор определенных флажков с использованием главного флажка 
0  VBA: Код паузы для различных длин времени с Doevents 
0  VBA Help - скрипт для запуска 3 макросов через функцию вызова не будет работать все макросы 
1  Outlook 2013: выберите несколько электронных писем и автозагрузка с помощью шаблона 
1  Сравните несколько пар документов 
0  VBA для извлечения даты из файла 
2  Как я могу найти слово в ячейке в Excel VBA и окрасить его красным (только слово, а не всю ячейку), используя код VBA?