#vba #ms-word
#vba #ms-word
Вопрос:
У меня есть два документа Word (Doc1.docm) и (Doc2.docm). В Doc1.docm я выбираю месяц и год (формат: ММММ ГГГГ), используя элемент управления содержимым средства выбора даты. Я определил это поле выбора даты как «Date1».
Я пытаюсь автоматически обновить новое поле содержимого в Doc2.docm в заголовке, когда я выбираю месяц и год в Doc1.docm.
Я могу сделать это в том же документе, используя только Doc1.docm при использовании этого кода:
Private Sub Document_ContentControlOnExit(ByVal ContentControl As ContentControl, Cancel As Boolean)
Dim CCtrl As ContentControl
If ContentControl.Title = "Date1" Then
For Each CCtrl In ActiveDocument.ContentControls
If CCtrl.Title = "Date2" Then
With CCtrl
.LockContents = False
.Range.Text = Format(ContentControl.Range.Text, "MMMM YYYY")
.LockContents = True
End With
Exit For
End If
Next
End If
End Sub
Кто-нибудь знает, как я могу обновить Doc2.docm, когда я выбираю месяц и год в Doc1.docx ?
Ответ №1:
Вам нужно будет открыть другой документ Word. Это может быть достигнуто программно с помощью:
Dim wordDoc as object
Set wordDoc = CreateObject("Word.Application")
wordDoc.Documents.Open("C:Doc2.docm")
Теперь вы можете программно манипулировать содержимым Doc2.docm, точно так же, как вы делаете это с Doc1.docm. Если вам интересно, почему документ не отображается: он скрыт. Чтобы сделать его видимым, вы должны установить wordDoc.Visible = True
. Не забудьте закрыть Doc2 после внесения изменений с помощью WordDoc.Quit
Комментарии:
1. Теперь, что мне сделать, чтобы исправить свой код, чтобы использовать это? Я
CCtrl
определил как Date1, так и Date2 сFor each
помощью инструкции. Я не понимаю, как я мог бы исправить код с тем, что у вас есть здесь.