Word- как установить полям всех ячеек таблицы значение полей, принятое по умолчанию

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

anval
Сообщения: 98
Зарегистрирован: 09 ноя 2004, 10:06

В Word-ом документе имеется таблица, для которой заданы левое и правое поля ячеек (Таблица-Свойства таблицы-Параметры-Поля ячеек по умолчанию).

Параметры отдельных ячеек таблицы отличаются от заданных. Необходимо значения полей всех ячеек таблицы установить равными значениям, принятым в таблице по умолчанию, что делается в Worde очень просто:
Таблица-Свойства таблицы-Ячейка – Параметры-Поля ячейки (включить «Как во всей таблице)).
Как это сделать с помощью макроса?
Спасибо
Аватара пользователя
Busine2009
Сообщения: 322
Зарегистрирован: 18 июл 2009, 15:34
Контактная информация:

anval
я не нашёл, как добраться с помощью VBA к
Свойства таблицы - Ячейка - Параметры.
Но сбросить можно следующим образом:

Код: Выделить всё

Sub m_1()
Selection.Tables(1).Style = "Сетка таблицы"
End Sub
После чего можно установить нужные поля для всей таблицы.
anval
Сообщения: 98
Зарегистрирован: 09 ноя 2004, 10:06

Busine2009, спасибо .
Это не совсем то, что хотелось бы (т.к. сбрасываются все параметры, установленные в некоторых ячейках специальным образом), поэтому приходится восстанавливать и их (выравнивание в ячейках, вид границы и т.д.).
Поэтому, если появятся еще какие-то предложения, буду признательна.
Попутный вопрос - как выделить несколько строк таблицы, зная номера строк?
Terminators
Сообщения: 14
Зарегистрирован: 23 сен 2010, 11:13

anval
вот так можно управлять полями ячеек, но как поставить галочку "Поля ячеек "как во всей таблице" - не знаю.

Код: Выделить всё

Sub Макрос1()
Dim oCell As Cell
For Each oCell In Selection.Tables(1).Range.Cells
    oCell.TopPadding = CentimetersToPoints(0)
    oCell.BottomPadding = CentimetersToPoints(0)
    oCell.LeftPadding = CentimetersToPoints(0.19)
    oCell.RightPadding = CentimetersToPoints(0.19)
Next
End Sub
Вот так можно выделять строки в таблице:

Код: Выделить всё

Sub Макрос2()
Selection.Tables(1).Rows(1).Select
End Sub
anval
Сообщения: 98
Зарегистрирован: 09 ноя 2004, 10:06

Terminators - спасибо.
Способом перебора в цикле я пробовала, но т.к таблица большая (1000 строк, 10 колонок - и это не предел), то длится такая процедура очень долго. Поэтому воспользовалась пока рекомендацией Busine2009, дальше устанавливаю значения полей как параметры таблицы (Selection.Tables(1).LeftPadding и т.д.) - это всего лишь по одному значению для каждого поля, а дальше нужно исправлять то, что отличается от стандарта, тут и спотыкаюсь - как это записать.
Может, кто-нибудь все-таки придумает, как запрограммировать действия, которые будут соответствовать установке галочек "Поля ячеек "как во всей таблице" и "Параметры" - "переносить текст" ( "Таблица-Свойства таблицы-Ячейка – Параметры").

Код :
Sub Макрос2()
Selection.Tables(1).Rows(1).Select
End Sub

Мой вопрос был:
"как выделить несколько строк таблицы, зная номера строк"
Выделение нужно не одной строки, а нескольких.

И еще вопрос - как объявить заголовок таблицы - пусть это будут первые ее 3 строки.
Terminators
Сообщения: 14
Зарегистрирован: 23 сен 2010, 11:13

"Параметры" - "переносить текст" ( "Таблица-Свойства таблицы-Ячейка – Параметры"
Запишите макрос с помощью макрорекордера и будет код.
как выделить несколько строк таблицы, зная номера строк
с помощью VBA можно выделить одновременно только смежные элементы. Поэтому выделять не надо, а надо делать действия над объектами.

Заголовки таблицы:

Код: Выделить всё

Sub Макрос3()
Selection.Tables(1).Rows(1).HeadingFormat = True
Selection.Tables(1).Rows(2).HeadingFormat = True
Selection.Tables(1).Rows(3).HeadingFormat = True
End Sub
anval
Сообщения: 98
Зарегистрирован: 09 ноя 2004, 10:06

Terminators, я с макрорекодера и начинала - получила следующий код

Sub УстановитьПараметрыЯчеек()
Selection.Tables(1).Select
With Selection.Cells(1)
.WordWrap = True
.FitText = False
End With
End Sub

Действия были следующие (запись макроса начала, стоя в произвольной ячейке таблицы)
Таблица-Выделить таблицу
Таблица-Свойства таблицы-Ячейка-Включаю "Поля ячейки- как во всей таблице" и "переносить текст"
Запускаю макрос , результат работы:
установлен режим переноса в первой ячейке
поля везде остаются прежними, что и соответствует тексту макроса.

С заголовком получилось, спасибо.

Terminators, не поняла - так можно ли в Worde выделить смежные строки таблицы? Мне и нужны смежные .
Terminators
Сообщения: 14
Зарегистрирован: 23 сен 2010, 11:13

anval
да, вспомнил про то, что макрос применяется только к одной ячейке.

А что тебе выделить надо конретно?
Пока приходит в голову только использование Selection + Extend: выделяешь одну строку, а затем двигаешься с Extendом.
anval
Сообщения: 98
Зарегистрирован: 09 ноя 2004, 10:06

Terminators - нужно выделить несколько конкретных строк таблицы (попробую с Extendом)

И еще впрос.
В нижнем колонтитуле находится таблица. Как записать в ее ячейку информацию?
Аватара пользователя
Busine2009
Сообщения: 322
Зарегистрирован: 18 июл 2009, 15:34
Контактная информация:

anval

Код: Выделить всё

Sub m_1()
Selection.Sections(1).Footers(wdHeaderFooterPrimary).Range.Tables(1).Cell(1, 1).Range.Text = "Текст"
End Sub
Ответить