I am looking for a way (or decent introduction) into how to select every table in a Microsoft Word 2013 Document and autofit the contents. Each table is independent of one another and separated by text.
I have established the following code so far:
Sub autofit()
Selection.Tables(1).AutoFitBehavior (wdAutoFitContent)
End Sub
Which works for individual tables and every column in said table, I understand the format of the «for loop», but would like a nudge to how to transform my individual selection to the entire document.
This is my first post so apologies for any conventions I have missed.
cheezsteak
2,6924 gold badges22 silver badges38 bronze badges
asked Dec 18, 2014 at 17:18
Its pretty trivial to loop them all;
Dim t As Table
For Each t In ActiveDocument.Tables
t.AutoFitBehavior wdAutoFitContent
Next
answered Dec 18, 2014 at 17:22
Alex K.Alex K.
170k30 gold badges263 silver badges286 bronze badges
1
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
1 01.02.2018 16:26:54
- NSV
- рядовой
- Неактивен
- Зарегистрирован: 20.01.2018
- Сообщений: 4
Тема: Макрос для выделения всех таблиц в документе
Добрый день! Помогите, пожалуйста, с созданием макроса для выделения всех таблиц в документе. Заранее спасибо!
2 Ответ от yshindin 01.02.2018 17:23:43
- yshindin
- генерал-полковник
- Неактивен
- Откуда: Москва
- Зарегистрирован: 12.05.2012
- Сообщений: 447
- Поблагодарили: 171
- За сообщение: 1
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 Ответ от NSV 01.02.2018 17:40:28
- NSV
- рядовой
- Неактивен
- Зарегистрирован: 20.01.2018
- Сообщений: 4
Re: Макрос для выделения всех таблиц в документе
Именно, под выделением имелось в виду, то как бы таблицы выделялисьс зажатым СTRL по очереди.
Если нельзя через VBA, то где тогда можно просмотреть список всех редактируемых параметров, связанных с форматирование таблиц, и их правильную запись в VBA?
4 Ответ от yshindin 01.02.2018 18:09:37
- yshindin
- генерал-полковник
- Неактивен
- Откуда: Москва
- Зарегистрирован: 12.05.2012
- Сообщений: 447
- Поблагодарили: 171
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 Ответ от yshindin 01.02.2018 18:16:06
- yshindin
- генерал-полковник
- Неактивен
- Откуда: Москва
- Зарегистрирован: 12.05.2012
- Сообщений: 447
- Поблагодарили: 171
Re: Макрос для выделения всех таблиц в документе
yshindin пишет:
. . .
Вам следует почитать объектную модель Word, напр., внешняя ссылка
. . .
Более внятное изложение в внешняя ссылка
Кстати, там и про таблицы есть
внешняя ссылка
6 Ответ от yshindin 01.02.2018 18:25:00
- yshindin
- генерал-полковник
- Неактивен
- Откуда: Москва
- Зарегистрирован: 12.05.2012
- Сообщений: 447
- Поблагодарили: 171
Re: Макрос для выделения всех таблиц в документе
Прошу прощения, там материал в основном для VB.Net, а не VBA.
Вот стартовая ссылка для Word 2010:
внешняя ссылка
Там описание всех объектов с примерами.
7 Ответ от yshindin 01.02.2018 18:33:15
- yshindin
- генерал-полковник
- Неактивен
- Откуда: Москва
- Зарегистрирован: 12.05.2012
- Сообщений: 447
- Поблагодарили: 171
- За сообщение: 1
Re: Макрос для выделения всех таблиц в документе
yshindin пишет:
. . .
Кстати, там и про таблицы есть
. . .
Вот нашел VBA-примеры про таблицы.
внешняя ссылка
Материалов много, но всегда следует учитывать версию Word.
Как правило, материалы для более старой версии должны корректно работать и в более поздней.
8 Ответ от NSV 01.02.2018 22:36:35
- NSV
- рядовой
- Неактивен
- Зарегистрирован: 20.01.2018
- Сообщений: 4
Re: Макрос для выделения всех таблиц в документе
Спасибо огромное! Очень помогло! Теперь можна работать)
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
1 / 1 / 0 Регистрация: 04.09.2013 Сообщений: 30 |
|
1 |
|
Выделение всех таблиц в документе01.12.2017, 13:13. Показов 31629. Ответов 9
Как выделить все таблицы в большой документе?
0 |
Казанский 15136 / 6410 / 1730 Регистрация: 24.09.2011 Сообщений: 9,999 |
||||
01.12.2017, 13:28 |
2 |
|||
MKM, макросом попробуйте
2 |
1233 / 671 / 238 Регистрация: 22.12.2015 Сообщений: 2,092 |
|
01.12.2017, 13:41 |
3 |
MKM, на форуме обсуждалось, как присвоить всем таблицам один стиль, смотрите тему Как поменять цвет всех таблиц одновременно?
1 |
1 / 1 / 0 Регистрация: 04.09.2013 Сообщений: 30 |
|
01.12.2017, 18:22 [ТС] |
4 |
Казанский, Благодарю, работает!!
0 |
Ozborn 0 / 0 / 0 Регистрация: 09.03.2019 Сообщений: 1 |
||||
09.03.2019, 15:15 |
5 |
|||
была похожая задача: отформатировать текст всех таблиц документа (изменить шрифт, отступы).
0 |
0 / 0 / 0 Регистрация: 12.09.2017 Сообщений: 3 |
|
29.04.2019, 23:20 |
6 |
Можно ли вставить экспресс стиль в этот макрос?
0 |
0 / 0 / 0 Регистрация: 22.01.2018 Сообщений: 142 |
|
26.10.2022, 14:04 |
7 |
Добрый день! Можно подобным образом во всех таблицах документа под названием,
0 |
Dinoxromniy 1233 / 671 / 238 Регистрация: 22.12.2015 Сообщений: 2,092 |
||||
26.10.2022, 15:44 |
8 |
|||
под названием, Заголовок, я полагаю.
кот.переносится при переносе таблицы на другой лист, двойную чёрту (границу) сделать? Что сделать то надо, толком объясните. Вот это что ли:
0 |
0 / 0 / 0 Регистрация: 22.01.2018 Сообщений: 142 |
|
26.10.2022, 16:22 |
9 |
По-моему правильно поняли. Но у меня не работает, ругается »object required’. Что не так? Добавлено через 4 минуты
0 |
1233 / 671 / 238 Регистрация: 22.12.2015 Сообщений: 2,092 |
|
26.10.2022, 16:47 |
10 |
Но у меня не работает, ругается »object required’. Что не так? Не знаю, может есть объединенные строки или вложенные таблицы. Попробуйте выкопировать одну таблицу в новый документ и проверить на ней, когда вычислите проблемную — приложите сюда.
0 |
В Word легко выбрать таблицу, нажав кнопку в верхнем левом углу таблицы, как показано на скриншоте ниже. Вы также можете выбрать таблицу с помощью функции «Выбрать таблицу». Однако есть ли способ быстро выбрать все таблицы сразу в документе Word? Методы, описанные в этой статье, помогут вам пройти через это.
Выбрать все таблицы в Word с кодом VBA
Легко выберите все таблицы в Word с помощью Kutools for Word
Выбрать все таблицы в Word с кодом VBA
1, нажмите другой + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.
2. В открытии Microsoft Visual Basic для приложений окна, нажмите Вставить > Модули, Затем скопируйте и вставьте следующий код VBA в окно модуля;
Код VBA: выберите все таблицы в текущем документе:
Sub selecttables()
Dim mytable As Table
For Each mytable In ActiveDocument.Tables
mytable.Range.Editors.Add wdEditorEveryone
Next
ActiveDocument.SelectAllEditableRanges (wdEditorEveryone)
ActiveDocument.DeleteAllEditableRanges (wdEditorEveryone)
End Sub
3. нажмите F5 ключ для запуска кода
После этого сразу же выбираются все таблицы в текущем документе.
Легко выберите все таблицы в Word с помощью Kutools for Word
По сравнению с использованием кода VBA для выбора всех таблиц в документе, Kutools for WordАвтора Выбрать таблицы утилита довольно удобная. Вы можете использовать эту функцию для выбора таблиц в выделенном фрагменте или во всем документе. Пожалуйста, сделайте следующее:
Kutools for Word : С более чем 100 удобными надстройками Word, бесплатно попробовать без ограничений в 60 дня.
Нажмите Кутулс > таблицы > Выбрать таблицы. Смотрите скриншот:
Внимание: Для выбора таблиц в выборе вам необходимо сначала выбрать диапазон, а затем применить функцию.
Тогда вы можете увидеть результаты следующим образом.
Выберите таблицы в выборе:
Выделите таблицы во всем документе:
Если вы хотите получить бесплатную пробную версию этой утилиты, перейдите по ссылке бесплатно скачать программное обеспечение сначала, а затем перейдите к применению операции в соответствии с вышеуказанными шагами.
Демонстрация. Простой выбор всех таблиц в Word с помощью Kutools for Word
Рекомендуемые инструменты для повышения производительности Word
Kutools For Word — Более 100 расширенных функций для Word, сэкономьте 50% времени
- Сложные и повторяющиеся операции можно производить разово за секунды.
- Вставляйте сразу несколько изображений из папок в документ Word.
- Объединяйте и объединяйте несколько файлов Word из папок в одну в желаемом порядке.
- Разделите текущий документ на отдельные документы в соответствии с заголовком, разрывом раздела или другими критериями.
- Преобразование файлов между Doc и Docx, Docx и PDF, набор инструментов для общих преобразований и выбора и т. Д.
Комментарии (10)
Оценок пока нет. Оцените первым!
Автор Svetik, 13 ноября 2017, 20:23
Подскажите, как выбрать (выделить) все таблицы.
Администратор
- Administrator
- Сообщения: 2,252
- Записан
Обычно выделять не надо. Можно просто пройтись по таблицам и обрабатывать каждую таблицу.
К тому же в ворде нельзя выделить с помощью макроса несмежные фрагменты.
Я не против такого варианта. Только не работает
Sub Макрос1()
Dim tbl As Table
On Error Resume Next
For Each tbl In ActiveDocument.Tables
With Selection.ParagraphFormat
.FirstLineIndent = CentimetersToPoints(1.25)
End With
Next tbl
End Sub
Администратор
- Administrator
- Сообщения: 2,252
- Записан
Selection относится к выделенному фрагменту.
Если у вас например выделен первый абзац в файле, а макрос перешёл к таблице 2, то какая взаимосвязь между Selection и таблицей 2? Выделенный первый абзац — это Selection, а таблица 2 это tbl.
Внутри таблицы делайте цикл по всем абзацам или используйте tbl.Range для доступа сразу ко всем абзацам.
В коде пишите tbl, ставьте точку и выбирайте нужное.
Спасибо! Вроде работает!
А как изменить макрос, чтобы это все работало только в выделенном фрагменте?
Макрос
Sub Макрос2()
Dim tbl As Table
For Each tbl In ActiveDocument.Tables
With tbl.Range
With .ParagraphFormat
.FirstLineIndent = CentimetersToPoints(0.25)
End With
End With
Next tbl
End Sub
[свернуть]
Администратор
- Administrator
- Сообщения: 2,252
- Записан
Просматривайте таблицы в объекте Selection. Напишите в коде «Selection», поставьте точку, выберите Tables.
Selection — это то, что выделено, это выделение юзер видит на мониторе.
- Форум по VBA, Excel и Word
-
►
Word -
►
Макросы в Word -
►
Word VBA Макросы: Как обработать несколько таблиц?