1

Тема: Макрос для выделения всех таблиц в документе

Добрый день! Помогите, пожалуйста, с созданием макроса для выделения всех таблиц в документе. Заранее спасибо!

2

Re: Макрос для выделения всех таблиц в документе

NSV пишет:

Добрый день! Помогите, пожалуйста, с созданием макроса для выделения всех таблиц в документе. Заранее спасибо!

Если под выделением вы понимаете операцию выделения текста (нажать курсор,  затем двигать его вправо или влево, не отжимая клавишу, затем отжать, в результате чего указанный таким образом текст выделен), то вручную это можно сделать (удерживая нажатой клавишу Ctrl, а через VBA - нельзя. Подобные вопросы уже рассматривались (напр., см. http://wordexpert.ru/forum/viewtopic.php?id=693).
Если вы хотите в макросе выделять таблицы для их обработки, то следует это делать в цикле, без выделения какого-либо объекта и используя либо объект Table, либо, напр., объект Table.Range. И затем уже в очередном таком объекте выполнять нужную обработку. Например, для изменения размера в шрифта во всех таблицах можно применить такой макрос:

Sub ChangeFontSizeInTables()
Dim tbl As Table
Dim tblrg As Range
For Each tbl In ActiveDocument.Tables
    Set tblrg = tbl.Range
    tblrg.Font.Size = 14
    Set tblrg = Nothing
Next
End Sub

3

Re: Макрос для выделения всех таблиц в документе

Именно, под выделением имелось в виду, то как бы  таблицы выделялисьс зажатым СTRL по очереди.
Если нельзя через VBA, то где тогда можно просмотреть список всех редактируемых параметров, связанных с форматирование таблиц, и их правильную запись в VBA?

4

Re: Макрос для выделения всех таблиц в документе

NSV пишет:

Именно, под выделением имелось в виду, то как бы  таблицы выделялисьс зажатым СTRL по очереди.
Если нельзя через VBA, то где тогда можно просмотреть список всех редактируемых параметров, связанных с форматирование таблиц, и их правильную запись в VBA?

Вам следует почитать объектную модель Word, напр., внешняя ссылка Там рассмотрены объекты, свойства, методы.
Для изучения "вживую" возможных атрибутов объектов я поступаю так: отображаю в VBA панель Locals (View > Locals Window). Затем в VBA-коде ставлю точку останова после оператора, в котором назначается объект. Для такого способа может сгодиться любой искусственный оператор присваивания, напр.

Set rg = Selection.Range.Paragraphs(1).Range
o = 0

вот как раз на операторе "o = 0" я и ставлю останов. При исполнении макрос останавливается на этом операторе. Тогда я в панели Locals смотрю дерево всех свойств объекта rg, который в приведенном примере соответствует диапазону первого абзаца из числа выделенных в тексте на момент исполнения оператора.
Некоторые атрибуты объектов имеют признак "только чтение" (т.е., изменить их значение через VBA нельзя),  а узнать, какие именно, опять-таки можно, только читая документацию по объектной модели. Там же можно узнать методы и ознакомиться с примерами применения.

5

Re: Макрос для выделения всех таблиц в документе

yshindin пишет:

. . .
Вам следует почитать объектную модель Word, напр., внешняя ссылка
. . .

Более внятное изложение в внешняя ссылка
Кстати, там и про таблицы есть
внешняя ссылка

6

Re: Макрос для выделения всех таблиц в документе

yshindin пишет:
yshindin пишет:

. . .
Вам следует почитать объектную модель Word, напр., внешняя ссылка
. . .

Более внятное изложение в внешняя ссылка
Кстати, там и про таблицы есть
внешняя ссылка

Прошу прощения, там материал в основном для VB.Net, а не VBA.
Вот стартовая ссылка для Word 2010:
внешняя ссылка
Там описание всех объектов с примерами.

7

Re: Макрос для выделения всех таблиц в документе

yshindin пишет:

. . .
Кстати, там и про таблицы есть
. . .

Вот нашел VBA-примеры про таблицы.
внешняя ссылка
Материалов много, но всегда следует учитывать версию Word.
Как правило, материалы для более старой версии должны корректно работать и в более поздней.

8

Re: Макрос для выделения всех таблиц в документе

Спасибо огромное! Очень помогло! Теперь можна работать)