#excel #ms-word #vba
#excel #ms-word #vba
Вопрос:
- У меня есть электронная таблица, которая генерирует документ word, форматирует его, а затем добавляет в документ кучу текста на основе того, что было выбрано и введено в электронную таблицу. Все это отлично работает.
- Что я пытаюсь сделать, так это каким-то образом вставить
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.