Это не ваше окончательное решение, так как не на 100% ясно, какое должно быть верхнее значение для счетчика строк, но чтобы дать вам старт, см. Ниже.
For
возвращает числорядов.На данный момент я поместил 5
, чтобы вы могли проверить, работают ли основы.
Документ создается внутри этого цикла.Обратите внимание, что Open
был изменен на Add
, чтобы создать новый документ из шаблона.Кроме того, переменная объекта objDoc
объявляется вверху, и новый документ назначается ей.Это также используется для адресации закладок, а не ActiveDocument
.В конце цикла objDoc
устанавливается на Nothing
при подготовке к следующей итерации.
rowCounter
был заменен статическими значениями строки в исходном коде, поэтому каждый цикл будет перемещатьсяв следующий ряд.
Sub CreateWR()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
Dim rowCounter as Long
Dim objword As Object
Dim objDoc as Object
Set objword = CreateObject("Word.Application")
objword.Visible = True
For rowCounter = 2 to 5
Set objDoc = objword.Documents.Add ("C:\User\Documents\FileControl\template.doc")
With objDoc
.Bookmarks("PropertyName").Range.Text = ws.Range("a" & CStr(rowCounter)).Value
.Bookmarks("ProjectNumber").Range.Text = ws.Range("b" & CStr(rowCounter)).Value
.Bookmarks("BudgetNumber").Range.Text = ws.Range("c" & CStr(rowCounter)).Value
.Bookmarks("ProjecName").Range.Text = ws.Range("d" & CStr(rowCounter)).Value
.Bookmarks("Vendor_1").Range.Text = ws.Range("e" & CStr(rowCounter)).Value
.Bookmarks("Price_1").Range.Text = ws.Range("f" & CStr(rowCounter)).Value
.Bookmarks("Vendor_2").Range.Text = ws.Range("g" & CStr(rowCounter)).Value
.Bookmarks("Price_2").Range.Text = ws.Range("h" & CStr(rowCounter)).Value
.Bookmarks("Vendor_3").Range.Text = ws.Range("i" & CStr(rowCounter)).Value
.Bookmarks("Price_3").Range.Text = ws.Range("j" & CStr(rowCounter)).Value
.Bookmarks("Vendor_1_2").Range.Text = ws.Range("e" & CStr(rowCounter)).Value
.Bookmarks("RequestedBy").Range.Text = ws.Range("m" & CStr(rowCounter)).Value
End With
Set objDoc = Nothing
Next
End Sub