в Access VBA у меня есть следующее создание и заполнение таблицы Word без проблем.
oWord.ActiveDocument.Tables.Add Range:=oDoc.Bookmarks("\endofdoc").Range, NumRows:=1, NumColumns:=5
rs.MoveFirst
r = 0 'current row counter
'start the recordset loop reserving the top two rows for header type stuff.
With oWord.Selection
.TypeText "Control Identifier"
.MoveRight Unit:=wdCell
.TypeText "Control Name"
.MoveRight Unit:=wdCell
.MoveRight Unit:=wdCell
.MoveRight Unit:=wdCell
'first data row
.MoveRight Unit:=wdCell
.TypeText rs("Control_Main")
.MoveRight Unit:=wdCell
.TypeText rs("Title")
.MoveRight Unit:=wdCell
.MoveRight Unit:=wdCell
.MoveRight Unit:=wdCell
......
и т. Д., Когда таблица заполнена, я вставляю разрыв страницы и некоторый текст, затем я вставляю вторая таблица.
oWord.ActiveDocument.Tables.Add Range:=oDoc.Bookmarks("\endofdoc").Range, NumRows:=1, NumColumns:=3
rs.MoveFirst
With oWord.Selection
'first data row
.MoveRight Unit:=wdCell
.TypeText rs("Control_main")
.MoveRight Unit:=wdCell
.TypeText rs("Title")
.MoveRight Unit:=wdCell
......
Вторая таблица создается, но в ней ничего не заполняется. Если я добавлю oWord.Selection.Style = "Table Grid"
после создания моей второй таблицы - он создаст сетку вокруг первой таблицы, но никакой дополнительный текст или строки не будут добавлены в первую таблицу.
Я знаю, что могу сделать тип set oTable =
создание таблицы, но затем, когда я пытаюсь выбрать ее, кажется, что она выбирается из Word.Document вместо Word.Application, а мое последующее с .Selection не подходит для .moveright для моего динамического создания c.
Есть идеи, где я ошибаюсь?
--- Обновление пост-работы --- Особая благодарность @freeflow за его терпение и помощь. Его код был великолепен, мне просто нужно было немного поэкспериментировать с этой частью. ... Модуль перемещения wdRow работал, но без дополнительной строки он покинул таблицу. У меня также были проблемы со ссылкой на .Cells (2) для 2-го столбца в этой строке - но перемещение сначала, а затем ввод текста работало нормально.
this.
myRow.Move unit:=wdRow, Count:=1
myRow.Cells(1).Range.Text = rs("Control_Main")
myRow.Cells(2).Range.Text = rs("Title")
стало этим.
oDoc.Tables(1).Rows.Add
myRow.Move Unit:=wdRow, Count:=1
myRow.Cells(1).Range.Text = rs("Control_main")
myRow.Move Unit:=wdCell, Count:=1
myRow.Cells(1).Range.Text = rs("Title")