Элементы управления содержимым MS Word

Я новичок в работе с VBA и Word 2010.

У меня есть документ Word с некоторыми текстовыми полями, использующими элементы управления содержимым (т.е. элемент управления форматированным текстом).

Я хочу, чтобы один из них с именем (Заголовок) в качестве «testbox» был счетчиком того, сколько раз документ был напечатан.

У меня есть код из Excel, который работает. Можно ли использовать это в MS Word? Как взаимодействовать с элементом управления содержимым вместо ячейки в Excel?

Private Sub Workbook_BeforePrint(Cancel As Boolean) 
  Cancel = True 
  Application.EnableEvents = False 
  ActiveSheet.PrintOut 
  Range("A1").Value = Range("A1").Value + 1
  Application.EnableEvents = True 
End Sub

person user5701075    schedule 20.12.2015    source источник


Ответы (1)


Базовый подход кода, который вы показываете, должен работать в Word, вам просто нужно найти соответствующие имена объектов, методов и свойств. Document_BeforePrint, например, и ActiveDocument.Print.

Word не имеет свойства EnableEvents, поэтому вам нужно создать собственный метод или методы для отключения событий, которые вы определяете на уровне приложения. Как должны выглядеть эти методы и что для них требуется, является частью обсуждения того, как использовать события уровня приложения в Office - части Справочника по языку VBA (https://msdn.microsoft.com/en-us/library/office/ff821218.aspx).

ContentControl можно выбрать по его заголовку с помощью метода Document.SelectContentControlsByTitle. Это возвращает массив элементов управления содержимым с одинаковым заголовком. Если у вас только один, то примерно так:

Dim cc As Word.ContentControl
Dim ccs as Word.ContentControls
Set ccs = ActiveDocument.SelectContentControlsByTitle("testbox")
Set cc = ccs(1)
cc.Range.Text = Cstr(CInt(cc.Range.Text) + 1)
person Cindy Meister    schedule 20.12.2015