Как установить курсор после таблицы в текстовом документе, используя VBA - PullRequest
0 голосов
/ 07 февраля 2019

Я должен создать отчет в документе Word без шаблона.Этот отчет состоит из записей из MS Access - и там будет некоторый текст, а затем таблица, итеративная на основе количества записей (я буду создавать таблицы динамически, используя VBA на основе количества записей).Я могу начать вставлять текст в текстовый документ, используя закладку в качестве отправной точки, а затем добавить таблицу и заполнить ячейки.Однажды вопрос закончил заполнение таблицы, как я могу поместить курсор на следующую строку после таблицы, чтобы начать вставлять текст.Ниже приведен мой код, любой с некоторыми подсказками или примером будет признателен - Спасибо!

    Set wordObj = CreateObject("Word.Application")

    Set wordDoc = wordObj.Documents.Open(fileName:=wrdTMPLT, Visible:=True)

    wordDoc.Bookmarks("rptdate").Range.Text = Format(DATE, "dd-mmm-yyyy")
    Set wordrange = wordDoc.GoTo(what:=wdGoToBookmark, Name:="startpoint")      'set cursor to start point

    wordrange.Text = Me.Text3_CHK

    Set wordrange = wordDoc.GoTo(what:=wdGoToBookmark, Name:="tblpoint")      'set cursor to location to insert table

    Set tbl = wordDoc.Tables.Add(Range:=wordrange, numrows:=4, numcolumns:=2)

    tbl.CELL(1, 1).Merge MergeTo:=tbl.CELL(1, 2)
    tbl.CELL(3, 1).Merge MergeTo:=tbl.CELL(3, 2)
    tbl.CELL(4, 1).Merge MergeTo:=tbl.CELL(4, 2)

    tbl.CELL(1, 1).Range.InsertAfter "Title: "
    tbl.CELL(2, 1).Range.InsertAfter "Coordinator: "
    tbl.CELL(2, 2).Range.InsertAfter "Engineer: "
    tbl.CELL(3, 1).Range.InsertAfter "Vendor 1: "
    tbl.CELL(3, 2).Range.InsertAfter "Vendor 2: "
    tbl.CELL(4, 1).Range.InsertAfter "Contractor: "

    tbl.Borders.Enable = False

    'Following text to enter after the table above                       
    wordrange.Text = "HellO"

    'continue with next table ... n text/table cycle  based  # of records

1 Ответ

0 голосов
/ 07 февраля 2019

Чтобы добраться до точки (абзаца), следующей за таблицей, назначьте диапазон таблицы объекту Range, а затем сверните его до конечной точки:

Dim rng as Word.Range
'Do things here until table is finished
Set rng = tbl.Range
rng.Collapse wdCollapseEnd
'Now the Range is after the table, so do things with it, for example:
rng.Text = "more text"
...