Design_Nick Опубликовано 7 ноября, 2009 Жалоба Поделиться Опубликовано 7 ноября, 2009 Нужно всем таблицам в документе присвоить конкретный стиль "Таблица" (до этого у них стилей нет). как их найти я знаю.. а как привоить стиль ХЗ Нашел здесь код для автовыравнивания таблиц по границам страницы Dim MyTbl As TableFor Each MyTbl In ActiveDocument.Tables MyTbl.AutoFitBehavior wdAutoFitWindow MyTbl.Style = ActiveDocument.Styles("Таблица") Next MyTblEnd Sub т.е. таблицу найти я могу, а как присвоить всей таблице стиль? Кстати вот прикольная функция с того же сайта.Правда мой вопрос она не решает Массовое форматирование документов Posted By Антон Кокин On августа 28, 2009 @ 21:08 In Макросы, Форматирование, Шаблоны Word | 10 Comments Время от времени пользователям редактора Word требуется изменить что-то (текст, форматирование) сразу в нескольких документах, без необходимости работы с каждым документом по отдельности. В качестве примера могу привести Макрос пакетной замены (автор: Е.Родыгин), с помощью которого возможно искать и менять какой-то единый текст во многих документах одновременно. И вот недавно ко мне обратился Дмитрий с просьбой помочь ему в аналогичной ситуации. Он спрашивал:Дано очень много файлов формата rtf и doc. Необходимо их отформатировать разом, не открывая каждый в отдельности, а именно: изменить во всех размер шрифта на 12, поставить абзацы 1.25, сделать times new roman, изменить поля, покрасить текст в черный, интервал одинарный. Помогите, пожалуйста! Ссылка на комментарий Поделиться на другие сайты Поделиться
silwer Опубликовано 7 ноября, 2009 Жалоба Поделиться Опубликовано 7 ноября, 2009 запиши макрос (включаеш запись, присваеваеш стиль таблице, останавливаешзапись) - и посмори как происходит процедура присвоения стиля Ссылка на комментарий Поделиться на другие сайты Поделиться
Design_Nick Опубликовано 7 ноября, 2009 Автор Жалоба Поделиться Опубликовано 7 ноября, 2009 Такой макрос записать не могу В режиме записи мне не дает таблицу выделить. Сам в шоке. Ссылка на комментарий Поделиться на другие сайты Поделиться
silwer Опубликовано 7 ноября, 2009 Жалоба Поделиться Опубликовано 7 ноября, 2009 В режиме записи мне не дает таблицу выделитьгм... потыкался. если поставить запись на паузу - дает выделить таблицу. потом снова запись включаеш (имхо бред сивой кабылы) вот что на выходе: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 Ссылка на комментарий Поделиться на другие сайты Поделиться
Design_Nick Опубликовано 7 ноября, 2009 Автор Жалоба Поделиться Опубликовано 7 ноября, 2009 хы... ларчик просто открывался.. Ссылка на комментарий Поделиться на другие сайты Поделиться
silwer Опубликовано 7 ноября, 2009 Жалоба Поделиться Опубликовано 7 ноября, 2009 получается нужно перебрать массив таблиц в документе и присвоить им истиль. ps/ я с 1 табл. в доке попробовал Ссылка на комментарий Поделиться на другие сайты Поделиться
Design_Nick Опубликовано 7 ноября, 2009 Автор Жалоба Поделиться Опубликовано 7 ноября, 2009 Dim MyTbl As TableFor Each MyTbl In ActiveDocument.Tables Application.Browser.Target = wdBrowseTable Application.Browser.Next Selection.Tables(1).Select Selection.ClearFormatting Selection.Style = ActiveDocument.Styles("Таблица") Next MyTblEnd SubНужно просто было воспользоваться функцией "Поиск таблицы" и далее через меню, а не через мышку. На всякий случай я в таблице сначала удаляю форматирование, потом присваиваю. Вот так вот. silwer, отдельное спасибо что вернул меня из поиска в Инете решения, к поиску его через запись макроса. Ссылка на комментарий Поделиться на другие сайты Поделиться
silwer Опубликовано 7 ноября, 2009 Жалоба Поделиться Опубликовано 7 ноября, 2009 не.. некорретно. шас попробую.... Ссылка на комментарий Поделиться на другие сайты Поделиться
Ктулху Опубликовано 7 ноября, 2009 Жалоба Поделиться Опубликовано 7 ноября, 2009 Сколько таблиц в документе? Если не дает выделять таблицу в режиме записи макроса, то можно попробовать по другому: выделить таблицу, а затем записать макрос для применения стиля. После этого выбирать каждую таблицу и применять к ней макрос. Хотя это вариант, если таблиц не очень много и произвести действие нужно разово. Ссылка на комментарий Поделиться на другие сайты Поделиться
Design_Nick Опубликовано 7 ноября, 2009 Автор Жалоба Поделиться Опубликовано 7 ноября, 2009 от 40 до 300 таблиц и таких документов около 40 сейчас... и постоянно появляются. не.. некорретно.шас попробую....Что именно некорректно? Цикл? Ссылка на комментарий Поделиться на другие сайты Поделиться
silwer Опубликовано 7 ноября, 2009 Жалоба Поделиться Опубликовано 7 ноября, 2009 (изменено) вот так: Sub Макрос1() ' применение ко всем таблицам документа ' единого стиля Dim i as integer For i = 1 To ActiveDocument.Tables.Count ActiveDocument.Tables(i).Style = "Светлая заливка - Акцент 1" Next i End Subтак проще помоему. =) хотя именно со стилем "Таблица" что-то неканает. ненайден типа такой есть стиль "Сетка таблицы" Изменено 7 ноября, 2009 пользователем silwer Ссылка на комментарий Поделиться на другие сайты Поделиться
Design_Nick Опубликовано 7 ноября, 2009 Автор Жалоба Поделиться Опубликовано 7 ноября, 2009 хотя именно со стилем "Таблица" что-то неканает. ненайден типа такойПотому что у тебя такого нет Это созданный мной стиль и его нет в стилях по-умолчанию. Ссылка на комментарий Поделиться на другие сайты Поделиться
silwer Опубликовано 7 ноября, 2009 Жалоба Поделиться Опубликовано 7 ноября, 2009 ну тогда понятно. =) надеюсь все получится Ссылка на комментарий Поделиться на другие сайты Поделиться
Design_Nick Опубликовано 7 ноября, 2009 Автор Жалоба Поделиться Опубликовано 7 ноября, 2009 Пока так оставил:Dim MyTbl As TableFor 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 MyTblEnd Sub Твой вариант кода не выделяет таблицу, а значит не сможет очистить стили и запретить разрыв строк. Ссылка на комментарий Поделиться на другие сайты Поделиться
silwer Опубликовано 7 ноября, 2009 Жалоба Поделиться Опубликовано 7 ноября, 2009 а.. ну тогда дополним нужные дейсвтия 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 хотя может и не принципиально, но зачем юзать поиск, если уже существует массив объектов и его проще перебрать. Ссылка на комментарий Поделиться на другие сайты Поделиться
Design_Nick Опубликовано 7 ноября, 2009 Автор Жалоба Поделиться Опубликовано 7 ноября, 2009 Попробую твою версию. ПС. Я вообще не знаю VB Ссылка на комментарий Поделиться на другие сайты Поделиться
silwer Опубликовано 7 ноября, 2009 Жалоба Поделиться Опубликовано 7 ноября, 2009 зы. я тоже в нем интуитивно =) Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Пожалуйста, войдите, чтобы комментировать
Вы сможете оставить комментарий после входа в
Войти