Расположение таблицы в определенном месте в документе Word с использованием VBA
Я написал макрос, чтобы пользователь мог выбрать офисную ветвь из поля со списком, и теперь я хочу вставить соответствующий адрес в текстовый документ в определенном месте. Я использую таблицу для хранения адреса, однако, когда таблица создается, она создается в том месте, где курсор находится на странице.
Кажется, я не могу найти способ указать таблице точно (x,y), где мне нужно, чтобы она появилась. Поскольку в документе нет ничего, кроме текста, на него нет ссылок.
Я также пытаюсь избежать использования элементов управления Active X, если это вообще возможно.
2 ответа
Этот код добавит таблицу с тремя столбцами и одной строкой между вторым и третьим абзацами.
Sub InsertTable()
Dim tbl As Table
Dim pg As Paragraph
With ThisDocument
'Add a new paragraph that the table will replace
Set pg = .Paragraphs.Add(.Paragraphs(3).Range)
'Add a table in place of the new paragraph
Set tbl = .Tables.Add(pg.Range, 1, 3)
End With
tbl.Columns(1).Cells(1).Range.Text = "123 Main St"
tbl.Columns(2).Cells(1).Range.Text = "City"
tbl.Columns(3).Cells(1).Range.Text = "State"
tbl.Rows.LeftIndent = 41
End Sub
Вы можете использовать это для позиционирования таблицы как по горизонтали, так и по вертикали.
tbl.Rows.HorizontalPosition = 150 'In points
tbl.Rows.VerticalPosition = 200
Надеюсь, что это помогло.
У меня возникли проблемы с пониманием кода с оператором with из ответа Дика Куслейки, поэтому я хотел бы поделиться своей версией без оператора with, для таких людей, как я, гораздо проще понять:
Sub InsertTable()
Dim tbl As Table
Dim pg As Paragraph
'Add a new paragraph that the table will replace
Set pg = ThisDocument.Paragraphs.Add(ThisDocument.Paragraphs(3).Range)
'Add a table in place of the new paragraph
Set tbl = ThisDocument.Tables.Add(pg.Range, 1, 3)
tbl.Columns(1).Cells(1).Range.Text = "123 Main St"
tbl.Columns(2).Cells(1).Range.Text = "City"
tbl.Columns(3).Cells(1).Range.Text = "State"
tbl.Rows.LeftIndent = 41
End Sub