How to VBA add new text to a word table located in document header ?
Dear Expert,
I have a word document contained two tables.
One table (Table 0) is located in the document header consists of two column and 3 rows, the number of rows and columns are FIXED.
Another table (Table 1) is located in the document body where data from Access recordsets will be filled via vba like code below:
Private Sub
  Dim db As DAO.Database
  Dim rs As DAO.Recordset
  Dim wd As Object
  Dim fld As Field
  Dim iRow As Integer
  Dim iCol As Integer
  Dim iTbl As Integer
  Set wd = CreateObject("Word.Application")
  Set mydoc = wd.Documents.Open("C:\Sample.doc")
  Set db = CurrentDb()
  Â
 Â
  ' ** Starts Filling In Field Data into Table 1 Located in Document Body ** Â
  Set rs = db.OpenRecordset("MyRecordSets")
      Â
  iTbl = 1    'Existing table number in Word document body
  iRow = 1   'Starting row in table
  wd.Visible = True
   Â
  Do Until rs.EOF
   Â
    If iRow > mydoc.tables(iTbl).Rows.Count Then
      mydoc.tables(iTbl).Rows.Add
    End If
   Â
    For Each fld In rs.Fields
      iCol = iCol + 1
      mydoc.tables(iTbl).Cell(iRow, iCol).Range.Text = Nz(fld.Value)
    Next
    rs.MoveNext
    iRow = iRow + 1
    iCol = 0
  Loop
 Â
  Set rs = Nothing
  Set mydoc = Nothing
  Set wd = Nothing
 Â
End Sub
My question is how do I programmatically add text to rows of Table 0 located in Document Header before the transfer of recordsets into Table 1?
Attached is the graphical explanation of the sample document, the gray lined table represent Table 0 located in document header.
Dim tbl As Table
Set tbl = mydoc.Sections.First.Headers(wdHeaderFooterPrimary).Range.Tables(1)
tbl.Cell(1, 1).Range.Text = "Some text"
tbl.Cell(1, 2).Range.Text = "Some more text"
I believed it was an Access version issue, e.g. Dim tbl As Table doesnt work for me cause my version of VB editor does not have this function, I have to change it to Dim tbl As Object instead.
Dim hdr as HeaderFooter also not classified as a function in my older version of VB editor.
AFter I modified your suggested codes by implementing suggestion from als315
Set tbl = mydoc.Sections.First.Headers(1).Range.Tables(1)
it solved all the compile errors.
Get a FREE t-shirt when you ask your first question.
We believe in human intelligence. Our moderation policy strictly prohibits the use of LLM content in our Q&A threads.
Microsoft Access
--
Questions
--
Followers
Top Experts
Microsoft Access is a rapid application development (RAD) relational database tool. Access can be used for both desktop and web-based applications, and uses VBA (Visual Basic for Applications) as its coding language.