Datepicker content control — извлечение значения в другой документ с помощью VBA в Word

#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 помощью инструкции. Я не понимаю, как я мог бы исправить код с тем, что у вас есть здесь.