Спасибо за просмотр.
У меня есть набор записей с 60 полями, и я хочу экспортировать запись last для каждого поля в файл Microsoft Word с 60 закладками под названием g1
to g60
.
Конечно, я хотел бы пройти через них oop, но не могу заставить его работать.
По сути, я хочу вот что:
Dim wApp As Word.Application
Dim wDoc As Word.Document
Dim wDoct As Word.Document
Dim rs As DAO.Recordset
Dim rng As Word.Range
Dim intI As Integer
Dim fld As DAO.field
Set wApp = New Word.Application
Set wDoc = wApp.Documents.Open("C:\Users\Peter\Documents\testdoc.docm", ReadOnly:=False)
Set wDoct = wApp.Documents.Open("C:\Users\Peter\Documents\Trends.docx")
Set rs = CurrentDb.OpenRecordset("Overall")
Set rs = CurrentDb.OpenRecordset("Grades")
If Not rs.EOF Then rs.MoveLast
wDoc.Bookmarks("g1").Range.Text = Nz(rs!PlanQ, "")
wDoc.Bookmarks("g2").Range.Text = Nz(rs!PlanQMin, "")
wDoc.Bookmarks("g3").Range.Text = Nz(rs!PlanUnsat, "")
wDoc.Bookmarks("g4").Range.Text = Nz(rs!BriefQ, "")
wDoc.Bookmarks("g5").Range.Text = Nz(rs!BriefQmin, "")
wDoc.Bookmarks("g6").Range.Text = Nz(rs!BriefUnsat, "")
' and so on up to 60
wDoct.Save
wApp.Quit
Это работает, но, конечно, должно быть зациклено - я пробовал это, но оно выдает ошибку:
Dim wApp As Word.Application
Dim wDoc As Word.Document
Dim wDoct As Word.Document
Dim rs As DAO.Recordset
Dim rng As Word.Range
Dim intI As Integer
Dim fld As DAO.field
Set wApp = New Word.Application
Set wDoc = wApp.Documents.Open("C:\Users\Peter\Documents\testdoc.docm", ReadOnly:=False)
Set wDoct = wApp.Documents.Open("C:\Users\Peter\Documents\Trends.docx")
Set rs = CurrentDb.OpenRecordset("Overall")
Set rs = CurrentDb.OpenRecordset("Grades")
If Not rs.EOF Then rs.MoveLast
intI = 1
With rs
Do Until .EOF
For Each fld in rs.Fields
wDoc.Bookmarks("g" & "intI").Range.Text = Nz(rs!fld.Name, "")
Next fld
intI = intI + 1
loop
End With
wDoct.save
Wapp.quit
Любые идеи будут очень приветствоваться, в противном случае у меня впереди много печатания , :-)
Спасибо за ваше время!
Питер
Это текущий код, который не работает, как указано ниже: ОБНОВЛЕНИЕ Это точное копировать вставить.
Public Sub Looptest()
Dim wApp As Word.Application
Dim wDoc As Word.Document
Dim rs As DAO.Recordset
Dim index As Integer
Dim item As Variant
Set wApp = New Word.Application
Set wDoc = wApp.Documents.Open("C:\Users\Peter\Documents\testdoc.docm", ReadOnly:=False)
Set rs = CurrentDb.OpenRecordset("Grades")
If Not rs.EOF Then rs.MoveLast
For Each item In rs.Fields
index = index + 1
Dim bookmarkName As String
bookmarkName = "g" & index
Dim bookmarkValue As Variant
bookmarkValue = Nz(rs(item.Name).Value, "")
Debug.Print "Try set bookmark '" & bookmarkName & "' to '" & bookmarkValue & "' now."
Dim bookmarkRange As Word.Range
Set bookmarkRange = wDoc.Bookmarks(bookmarkName).Range
bookmarkRange.Text = bookmarkValue
Set bookmarkRange = Nothing
Next item
wApp.DisplayAlerts = False
wDoc.SaveAs2 "C:\Users\Peter\Documents\" & rs!ID & "_gradesheet.docm"
wDoc.Close
wApp.Quit