2016-04-18 2 views
0

Я использую макрос Excel, где я вставляю один и тот же текст в несколько закладок в документе Word. Как это сделать, указав команду insert один раз и применив ее ко всем местоположениям закладок?Вставка в несколько местоположений закладок - Excel VBA

Теперь я делаю следующее для всех закладок?

Dim monYear As String 
monYear = Format(DateAdd("m", -1, Now), "mmmm yyyy") 


wdApp.Selection.GoTo what:=-1, Name:="Front_Page_Month_Year" 
wdApp.Selection.TypeText monYear 

wdApp.Selection.GoTo what:=-1, Name:="Page2_Month_Year" 
wdApp.Selection.TypeText monYear 

А дальше и дальше ....

ответ

1

Там нет никакого способа, чтобы использовать одну команду для записи в нескольких местах закладки. Однако вы можете указать ссылку на одну закладку, чтобы отобразить содержимое этой закладки в нескольких местах.

Создайте закладку, затем вставьте ссылку перекрестной ссылки на нее в каждом месте, где вы хотите отображать содержимое закладки. (Или создайте одну перекрестную ссылку, затем скопируйте/вставьте в другие местоположения.)

Совет для вашего кода: подход, который вы используете с объектом Selection, не является оптимальным. Как и в Excel, лучше работать с объектной моделью, а не полагаться на Selection. Таким образом:

Dim doc as Word.Document 
Set doc = wdApp.ActiveDocument 'Note: if you're opening a document, set in the Open method 
doc.Bookmarks("Front_Page_Month_Year").Range.Text = monYear 
'When you're done, update the REF fields (references) 
doc.Fields.Update 
+0

Что делает 'doc.Fields.Update'? – Dombey

+0

И поскольку я программирую в Excel VBE, функция 'Bookmarks' не работает. – Dombey

+0

Перекрестные ссылки поддерживаются кодами полей REF. Обновление заставляет обновлять поля (подумайте об этом как принудительный расчет в Excel). Если вы объявляете и создаете экземпляр 'doc', как я показываю, тогда Закладки должны работать. Если нет, объясните, КАК это не работает - и это не функция, это коллекция. –

Смежные вопросы