2017-02-14 10 views
0

nested table in Word У меня есть шаблон, который по существу является столбцом из 4 строк в Work. Каждая ячейка помечена закладкой. Я скопировал таблицу из Excel в Word в одну из этих закладок (внутри ячеек). Теперь я пытаюсь отформатировать эту «вложенную таблицу», чтобы она соответствовала моим желаемым ширинам столбцов (для определенных столбцов), но я действительно борюсь с синтаксисом. Кроме того, в таблице первая строка содержит некоторые объединенные ячейки (некоторые из них объединены с ячейкой в ​​соседнем столбце, а некоторые в строке ниже).VBA Word Изменение размера строки таблицы и столбца в

Код я пытался:

With wd.Tables(2) 
    .Columns(2).Width = 20 
End With 

Но я получаю «Ошибка выполнения„5941“: запрошенный элемент коллекции не существует.» Означает ли это, что я не правильно его индексирую?

Tabels(2) предназначен для обозначения «вложенной таблицы» в пределах большего одиночного столбца из четырех ячеек строк.

Как правильно проиндексировать его/находить его индекс? И как бы изменить ширину, когда я объединил ячейки? Мне нужно: делить их сначала> настроить ширину> повторно слить? Кроме того, я делаю это в VBA Word, если я упоминаю «Библиотека объектов Microsoft Word xx.0» в excel VBA, могу ли я сделать это в Excel?

+0

Индексы начинаются с 0, а не 1, поэтому они всегда на единицу меньше числа, которое вы ожидаете от объекта. Например, для второй таблицы в документе Word вам действительно нужно будет ссылаться на 'wd.Tables (1)', первая таблица в документе Word будет 'wd.Tables (0)'. – Jordan

+0

@ Джордан вы уверены? Я просто проверил чек, где у меня было две таблицы (одна ниже другой, т. Е. Не вложенная), с одним набором как «Таблицы (0)», и я получил ту же ошибку во время выполнения. Когда они были установлены в Таблицы (1) и Таблицы (2), он работал нормально – JoshD

+0

@ Джордан ошибался. В Word индексы объектов, таких как таблицы, строки, столбцы и т. Д., Начинаются с 1 ot 0. То же самое в других приложениях Office. Если это действительно вложенная таблица, я предпочел бы вам получить доступ к wd.Tables (1). Таблицы (1) 'вместо' wd.Tables (2) ' – LocEngineer

ответ

1

Я воссоздал вложенную таблицу, подобную той, что была на экране; то есть 1 колонка с 4-мя рядами, затем вложенная 14 колонка/10 строки таблицы в строке 3.

Следующий код прекрасно работает для меня:

Sub AccessNestedTable() 
Dim tbl As Table, tbl2 As Table 
Dim wd As Document 

Set wd = ActiveDocument 

Set tbl = wd.Tables(1) 
Set tbl2 = tbl.Tables(1) 

With tbl2 
    .Columns.Width = 20 
End With 

End Sub 
+0

Спасибо, я заработал! – JoshD