Шерил обычно создает документы, в которых много-много таблиц. Все таблицы единообразны в том, что имеют одинаковую общую структуру. (Каждый из них содержит одинаковое количество столбцов, причем каждый столбец содержит информацию одного и того же типа.) Шерил ищет способ убедиться, что ширина столбцов во всех таблицах согласована.
Решение зависит от того, когда вам нужно создавать таблицы. Если документ новый, то согласованное создание таблиц довольно просто. Как было описано в других WordTips (и я не буду здесь вдаваться в подробности), вы можете сохранить свои стандартные таблицы как записи стандартных блоков или создать стиль таблицы, который определяет, как вы хотите, чтобы ваша таблица появляться. При необходимости вы просто вставляете запись Building Block или применяете стиль, и таблица отображается так, как вы хотите.
Решение немного сложнее, если ваш документ уже создан, и вы просто хотите применять согласованность к таблицам, существующим в документе. В этом случае решением является использование макроса для изменения ширины столбцов.
Можно создать макрос, который будет быстро переходить по каждой таблице в документе и делать каждый столбец в таблицу той же ширины, следующим образом:
Sub SetColumnWidths1 () Dim t As Table For Each t In ActiveDocument.Tables t.Columns.Width = InchesToPoints (2) Next tEnd Sub
Однако велика вероятность, что вы не хотите, чтобы каждый столбец был шириной 2 дюйма. Вероятно, вы хотите, чтобы каждый столбец имел определенную ширину, отличную от других столбцов. Следующая итерация макроса обрабатывает эту вероятность:
Sub SetColumnWidths2 () Dim t As Table For Each t In ActiveDocument.Tables t.Columns (1) .Width = InchesToPoints (2) t.Columns (2) .Width = InchesToPoints (2.5) t.Columns (3) .Width = InchesToPoints (3) Next tEnd Sub
Недостатком такого макроса является то, что вам нужно указать в кодирование, ширина каждого столбца. Кроме того, если в вашем документе есть аномальная таблица (в ней не такое же количество столбцов, как во всех других таблицах), макрос беспечно пытается установить ширину столбцов.
Sub SetColumnWidths3 () Dim t As Table Dim c As Column Dim ccnt As Integer Dim w () As Single Dim J As Integer Dim K As Integer Set t = ActiveDocument.Tables (1) ccnt = t.Columns.Count ReDim w (ccnt) J = 0 Для каждого c In t. Столбцы J = J + 1 w (J) = c. Ширина След. C Для J = 2 В ActiveDocument.Tables.Count Установить t = ActiveDocument.Tables (J) Если t.Columns.Count = ccnt Then For K = 1 to ccnt t.Columns (K). Width = w (K) Next K Endif Next JEnd Sub
Этот макрос проверяет количество столбцов в первой таблице (присваивая значение переменной ccnt), а затем смотрит на ширину каждого из эти столбцы (присвоение значений массиву w). Затем он проходит через остальные таблицы в документе и, если количество столбцов в таблице совпадает с числом в переменной ccnt, устанавливает ширину каждого столбца равной ширине, хранящейся в массиве w. В результате каждая таблица в документе (ну, по крайней мере, те, которые имеют такое же количество столбцов, что и первая таблица) имеют одинаковую ширину столбцов.
Здесь есть одна потенциальная ошибка: если таблицы в вашем документе каким-либо образом используют объединенные ячейки, это может испортить получаемые вами результаты. В этом случае вы захотите сохранить документ перед запуском макроса. Таким образом вы сможете визуально проверить результаты, а затем при необходимости вернуться к сохраненному документу.