Перейти к содержанию
Форум Челябинских Автомобилистов

Применить стиль ко всем таблицам в документе MS WORD


Рекомендуемые сообщения

Нужно всем таблицам в документе присвоить конкретный стиль "Таблица" (до этого у них стилей нет).

 

как их найти я знаю.. а как привоить стиль ХЗ

 

Нашел здесь код для автовыравнивания таблиц по границам страницы

 

Dim MyTbl As Table

For Each MyTbl In ActiveDocument.Tables

MyTbl.AutoFitBehavior wdAutoFitWindow

MyTbl.Style = ActiveDocument.Styles("Таблица")

Next MyTbl

End Sub

 

т.е. таблицу найти я могу, а как присвоить всей таблице стиль? :(

 

Кстати вот прикольная функция с того же сайта.

Правда мой вопрос она не решает :(

 

Массовое форматирование документов

 

Posted By Антон Кокин On августа 28, 2009 @ 21:08 In Макросы, Форматирование, Шаблоны Word | 10 Comments

 

Время от времени пользователям редактора Word требуется изменить что-то (текст, форматирование) сразу в нескольких документах, без необходимости работы с каждым документом по отдельности. В качестве примера могу привести Макрос пакетной замены (автор: Е.Родыгин), с помощью которого возможно искать и менять какой-то единый текст во многих документах одновременно.

 

И вот недавно ко мне обратился Дмитрий с просьбой помочь ему в аналогичной ситуации. Он спрашивал:

Дано очень много файлов формата rtf и doc. Необходимо их отформатировать разом, не открывая каждый в отдельности, а именно: изменить во всех размер шрифта на 12, поставить абзацы 1.25, сделать times new roman, изменить поля, покрасить текст в черный, интервал одинарный. Помогите, пожалуйста!

Ссылка на комментарий
Поделиться на другие сайты

запиши макрос (включаеш запись, присваеваеш стиль таблице, останавливаешзапись) - и посмори как происходит процедура присвоения стиля
Ссылка на комментарий
Поделиться на другие сайты

Такой макрос записать не могу :( В режиме записи мне не дает таблицу выделить. Сам в шоке. :(
Ссылка на комментарий
Поделиться на другие сайты

В режиме записи мне не дает таблицу выделить

гм... потыкался. если поставить запись на паузу - дает выделить таблицу. потом снова запись включаеш (имхо бред сивой кабылы)

 

вот что на выходе:

Sub Макрос1()
'
' Макрос1 Макрос
'
'
    Selection.Tables(1).Style = "Светлая заливка"
    Selection.Tables(1).Style = "Светлая заливка - Акцент 1"
    Selection.Tables(1).Style = "Светлая заливка - Акцент 2"
    Selection.Tables(1).Style = "Светлая заливка - Акцент 3"
    Selection.Tables(1).Style = "Светлая заливка - Акцент 4"
    Selection.Tables(1).Style = "Светлая заливка - Акцент 3"
End Sub
Ссылка на комментарий
Поделиться на другие сайты

получается нужно перебрать массив таблиц в документе и присвоить им истиль.

 

ps/ я с 1 табл. в доке попробовал

Ссылка на комментарий
Поделиться на другие сайты

Dim MyTbl As Table

For Each MyTbl In ActiveDocument.Tables

Application.Browser.Target = wdBrowseTable

Application.Browser.Next

Selection.Tables(1).Select

Selection.ClearFormatting

Selection.Style = ActiveDocument.Styles("Таблица")

Next MyTbl

End Sub

Нужно просто было воспользоваться функцией "Поиск таблицы" и далее через меню, а не через мышку.

 

На всякий случай я в таблице сначала удаляю форматирование, потом присваиваю.

 

Вот так вот.

 

silwer, отдельное спасибо что вернул меня из поиска в Инете решения, к поиску его через запись макроса.

Ссылка на комментарий
Поделиться на другие сайты

Сколько таблиц в документе?

Если не дает выделять таблицу в режиме записи макроса, то можно попробовать по другому: выделить таблицу, а затем записать макрос для применения стиля. После этого выбирать каждую таблицу и применять к ней макрос. Хотя это вариант, если таблиц не очень много и произвести действие нужно разово.

Ссылка на комментарий
Поделиться на другие сайты

от 40 до 300 таблиц :) и таких документов около 40 сейчас... и постоянно появляются.

 

не.. некорретно.

шас попробую....

Что именно некорректно? Цикл?
Ссылка на комментарий
Поделиться на другие сайты

вот так:

 

Sub Макрос1()

' применение ко всем таблицам документа
' единого стиля
    
    Dim i as integer
    
    For i = 1 To ActiveDocument.Tables.Count
        ActiveDocument.Tables(i).Style = "Светлая заливка - Акцент 1"
    Next i


End Sub

так проще помоему. =)

 

хотя именно со стилем "Таблица" что-то неканает. ненайден типа такой

 

есть стиль "Сетка таблицы"

Изменено пользователем silwer
Ссылка на комментарий
Поделиться на другие сайты

хотя именно со стилем "Таблица" что-то неканает. ненайден типа такой

Потому что у тебя такого нет ;) Это созданный мной стиль и его нет в стилях по-умолчанию.
Ссылка на комментарий
Поделиться на другие сайты

Пока так оставил:

Dim MyTbl As Table

For Each MyTbl In ActiveDocument.Tables

Application.Browser.Target = wdBrowseTable

Application.Browser.Next

Selection.Tables(1).Select

Selection.ClearFormatting

Selection.Style = ActiveDocument.Styles("Таблица")

Selection.Rows.AllowBreakAcrossPages = False

Next MyTbl

End Sub

 

Твой вариант кода не выделяет таблицу, а значит не сможет очистить стили и запретить разрыв строк.
Ссылка на комментарий
Поделиться на другие сайты

а.. ну тогда дополним нужные дейсвтия

 

Sub Макрос1()
'
' Макрос1 Макрос
'
    
    Dim i as integer 
    
    For i = 1 To ActiveDocument.Tables.Count
        
        ActiveDocument.Tables(i).Select
        Selection.ClearFormatting
        Selection.Style = ActiveDocument.Styles("Таблица")
        Selection.Rows.AllowBreakAcrossPages = False
        
    Next i


End Sub

хотя может и не принципиально, но зачем юзать поиск, если уже существует массив объектов и его проще перебрать.

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Сейчас на странице   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...