Добрый день дорогие форумчане, у вас голова хорошо работает в отличии от моей, от того и прошу помощи
У меня по работе часто необходимо делать шаблонные документы, запросы, повестки и так далее, как правило вся информация, для формирования документа берется из таблиц (ФИО, организация, должность и т.д.)
Для удобства прошу помочь составить макрос вба, для того, что бы он работал по принципу:
К примеру я пишу в первой строке названия столбцов в фигурных скобках, макрос смотрит, если в ворде есть одноименное название с фигурными скобками, то он по принципу функции в ворде "заменить", меняет значение из столбца с названием, которое совпадает с тем, что нужно поменять в ворде, и заменяет значением из эксель.
к примеру в эксель есть в ячей А1 название "{ФИО}", он подставляет значение из А2 (Петров), в вордовский шаблон, в место где также прописано слово "{ФИО}". И так циклично, пока не начнутся пустые строки.
При этом, если он проверил и заменил все с одной строки, он создает новый файл, в котором уже заменяет все значения на значения из новой строки
В пример скидываю шаблон ворд, документ эксель и сам макрос
Нашел вышеуказанный макрос, но при его запуске либо виснет, либо ошибку выдает, при переходе на ошибку, вот эта строка светится желтым и на ней видимо тормозит "wdDoc.SaveAs2 (XLSheet.Parent.Path & "\" & XLSheet.Cells(i, 4) & ".docx")"
У меня по работе часто необходимо делать шаблонные документы, запросы, повестки и так далее, как правило вся информация, для формирования документа берется из таблиц (ФИО, организация, должность и т.д.)
Для удобства прошу помочь составить макрос вба, для того, что бы он работал по принципу:
К примеру я пишу в первой строке названия столбцов в фигурных скобках, макрос смотрит, если в ворде есть одноименное название с фигурными скобками, то он по принципу функции в ворде "заменить", меняет значение из столбца с названием, которое совпадает с тем, что нужно поменять в ворде, и заменяет значением из эксель.
к примеру в эксель есть в ячей А1 название "{ФИО}", он подставляет значение из А2 (Петров), в вордовский шаблон, в место где также прописано слово "{ФИО}". И так циклично, пока не начнутся пустые строки.
При этом, если он проверил и заменил все с одной строки, он создает новый файл, в котором уже заменяет все значения на значения из новой строки
В пример скидываю шаблон ворд, документ эксель и сам макрос
| Код |
|---|
Sub Dogovorchiki()
Dim wdApp As Word.Application, wdDoc As Document, wdDocNew As Document, DocNames As String, XLSheet As Object
Set wdApp = New Word.Application
Set XLSheet = ActiveSheet
Application.ScreenUpdating = False
wdApp.ScreenUpdating = False
For i = 2 To WorksheetFunction.CountA(XLSheet.Range("A:A")) ' цикл по строкам (договорам)
Set wdDoc = wdApp.Documents.Open(XLSheet.Parent.Path & "\Повестка шаблон.docx")
wdDoc.SaveAs2 (XLSheet.Parent.Path & "\" & XLSheet.Cells(i, 4) & ".docx")
DocNames = DocNames & XLSheet.Cells(i, 4) & ".docx" & Chr(10)
Set wdDocNew = wdApp.Documents(XLSheet.Cells(i, 4) & ".docx")
For j = 1 To XLSheet.UsedRange.Columns.Count ' цикл по столбцам (полям)
Set MyRange = wdDocNew.Content
MyRange.Find.Execute FindText:=XLSheet.Cells(1, j), ReplaceWith:=XLSheet.Cells(i, j), Replace:=wdReplaceAll
Next j
wdDoc.Close
Next i
wdApp.Quit
Set wdApp = Nothing
MsgBox ("Сформированы следующие договоры: " & Chr(10) & DocNames)
End Sub
|
Нашел вышеуказанный макрос, но при его запуске либо виснет, либо ошибку выдает, при переходе на ошибку, вот эта строка светится желтым и на ней видимо тормозит "wdDoc.SaveAs2 (XLSheet.Parent.Path & "\" & XLSheet.Cells(i, 4) & ".docx")"
Изменено: - 29.09.2025 15:43:11