Вставить VBA в Word из Excel

#excel #ms-word #vba

#excel #ms-word #vba

Вопрос:

  1. У меня есть электронная таблица, которая генерирует документ word, форматирует его, а затем добавляет в документ кучу текста на основе того, что было выбрано и введено в электронную таблицу. Все это отлично работает.
  2. Что я пытаюсь сделать, так это каким-то образом вставить VBA код в документ Word во время его создания в Excel.

Вот конкретный код, который я пытаюсь вставить — в конечном итоге это должно перейти в Word VBA:

 Private Sub Document_Close()
    ActiveDocument.Saved = True
End Sub
  

Кажется, я не могу заставить Excel вставить этот код в Word создаваемый документ. Я знаю, что это возможно, но не могу в этом разобраться. Я попробовал несколько вещей, и он принимает мой код, но я понятия не имею, куда он вставляется, потому что, когда я ищу вставленные строки, я не могу их найти.

Вот код, который я использую для генерации Word documen t. Может кто-нибудь, пожалуйста, взглянуть и сообщить мне, как вставить приведенный выше код в этот документ? Спасибо за любую помощь, которую вы можете оказать.

 Set wrdApp = CreateObject("Word.Application")
Set wrdDoc = wrdApp.Documents.Add

With wrdApp.Selection
‘A bunch of formatting code and text inputting is listed here for the word document.
End With

wrdApp.Visible = True
wrdApp.Activate
  

Ответ №1:

Если вы настроили Word на доверенный программный доступ к VBA проекту, то:

 Sub ExceltoWord()
Dim strIn As String
strIn = "Private Sub Document_Close()" amp; Chr(10) amp; " ActiveDocument.Saved = True" amp; Chr(10) amp; "End Sub"
Set wrdApp = CreateObject("Word.Application")
Set wrddoc = wrdApp.Documents.Add
wrddoc.VBProject.VBComponents("ThisDocument").CodeModule.AddFromString strIn
wrdApp.Visible = True
wrdApp.Activate
End Sub
  

введите описание изображения здесь

Комментарии:

1. Это отлично работает. На самом деле мой другой код тоже работал, у меня просто не была включена опция Trust VBA. Хотя предоставленный вами код немного проще моего, поэтому я использую ваш код. Спасибо за помощь!

Ответ №2:

Если код, который вы хотите вставить в Word, является постоянным (как, вероятно, и должно быть), вы могли бы вручную создать файл Word с уже содержащимся в нем кодом, а затем использовать этот файл в качестве шаблона вместо того, чтобы начинать с полностью пустого документа Word.