Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Word
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.03.2009, 20:34   #1
shadowbeast
Пользователь
 
Регистрация: 11.02.2009
Сообщений: 29
По умолчанию Выделить все таблицы в документе

Добрый вечер!
Никак не могу собрать макрос.
Есть файл, в нём много таблиц. Подскажите пожалуйста, как выделить все таблицы в документе, а текст между ними оставить невыделенным?

Table.Selection Tables ?
shadowbeast вне форума Ответить с цитированием
Старый 04.03.2009, 22:37   #2
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию

Только вручную. (Ясно, что это не метод.)

Очень похожую — обратную — задачу недавно (в конце января) здесь решали:
http://www.programmersforum.ru/showthread.php?t=36501.

И вот там как-то обошлись без хитроумного выделения. В конечном счёте важно, что вам надо с этими (пока не выделенными) таблицами сделать.
Sasha_Smirnov вне форума Ответить с цитированием
Старый 05.03.2009, 05:25   #3
shadowbeast
Пользователь
 
Регистрация: 11.02.2009
Сообщений: 29
По умолчанию

Мне нужно ко всем таблицам в документе применить единое форматирование.
Сейчас я это делаю выделяя каждую таблицу вручную и используя макрос - форматирования таблицы.
Но таблиц иногда бывает очень много - до 150 листов. Напряжно)

Потому надо в начало макроса форматирования добавить строки:
"выделить все таблицы в документе")))
shadowbeast вне форума Ответить с цитированием
Старый 05.03.2009, 14:01   #4
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Цитата:
Сообщение от shadowbeast Посмотреть сообщение
Мне нужно ко всем таблицам в документе применить единое форматирование.
Сейчас я это делаю выделяя каждую таблицу вручную и используя макрос - форматирования таблицы.
Но таблиц иногда бывает очень много - до 150 листов. Напряжно)

Потому надо в начало макроса форматирования добавить строки:
"выделить все таблицы в документе")))
Привет, shadowbeast! Только так.
Код:
  Dim oTable As Table
  For Each oTable In ThisDocument.Tables
    'пишем нужное форматирование
  Next
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 05.03.2009, 20:10   #5
shadowbeast
Пользователь
 
Регистрация: 11.02.2009
Сообщений: 29
По умолчанию

Привет, viter.alex!

Спасибо, так и сделал.) Посмотрел на те макросы, что ты мне написал по анализу ячеек, разобрался как работает)
Всё отлично!

Только почему-то объявление в одном из случаев не сработало, а потом получилось)
shadowbeast вне форума Ответить с цитированием
Старый 18.04.2011, 17:28   #6
Vera111
 
Регистрация: 25.09.2009
Сообщений: 3
По умолчанию

Доброе время суток!
Прошу помочь. Я не программист вообще, но уверенный пользователь. Могу очень уверенно переписать чужой код как обезьяна и немножко переделать его под себя.
Написала, перелопатив гору макросов , код, чтобы форматировать все таблицы в документе:

Sub Table()

On Error Resume Next

Dim myTable As Table
Dim myCell As Cell
Dim myRange As Range
Dim с As Integer 'Подсчёт количества столбцов в таблице
Dim i As Long

Application.ScreenUpdating = False 'Запрет обновления экрана
For Each myTable In ActiveDocument.Tables




' Выровнять все столбцы по центру
'Обрабатываем ячейки во всех столбцах кроме первого
'Перебор всех ячеек
c = myTable.Columns.Count
For i = 2 To c
myTable.Columns(i).Select
Selection.Find.ClearFormatting
With Selection
For Each myCell In .Cells
myCell.Range.ParagraphFormat.Alignm ent = wdAlignParagraphCenter
myCell.Range.Cells.VerticalAlignmen t = wdCellAlignVerticalCenter
Next myCell
End With
Next i

' Применить ко всем таблицам одинаковый стиль
myTable.Style = ActiveDocument.Styles("Средний список 2 - Акцент 2")
myTable.Rows.Alignment = wdAlignRowCenter
myTable.AutoFitBehavior wdAutoFitWindow
myTable.Rows.HeightRule = wdRowHeightAuto
myTable.Rows.HeightRule = wdRowHeightAtLeast
myTable.Rows.WrapAroundText = False
myTable.PreferredWidthType = wdPreferredWidthPercent
myTable.PreferredWidth = 99
myTable.Range.Font.Size = 9
myTable.Rows.AllowBreakAcrossPages = False


With myTable.Range
.Find.ClearFormatting
.Find.Text = "^p" 'Ищем вхождения переводов строк и удаляем их
.Find.Replacement.Text = ""
.Find.Forward = True
.Find.Execute Replace:=wdReplaceAll
For Each myCell In .Cells
Set myRange = myCell.Range
myRange.MoveEnd Unit:=wdCharacter, Count:=-1
myCell.Range.Text = Trim(myRange.Text) 'Убираем пробелы
myCell.Range.ParagraphFormat.LeftIn dent = CentimetersToPoints(0)
myCell.Range.ParagraphFormat.FirstL ineIndent = 0
Next myCell
End With


With myTable.Rows(1)
.HeadingFormat = True 'Установка заголовков для 1-х строк таблиц
.HeightRule = wdRowHeightAuto 'Установка автовысоты первых строк
End With
With myTable.Rows(1)
For Each myCell In .Cells
myCell.Range.ParagraphFormat.Alignm ent = wdAlignParagraphCenter
myCell.Range.Cells.VerticalAlignmen t = wdCellAlignVerticalCenter
myCell.Range.ParagraphFormat.KeepWi thNext = True
Next myCell
End With

With myTable.Range
myTable.Select
Selection.Cells.DistributeWidth
End With
If Err.Number <> 0 Then Err.Clear
Next
Application.ScreenUpdating = True 'Разрешаем обновление экрана
End Sub

Меня всё устраивает. Но есть одна загвоздка.
Вот это кусок кода делает ширину всех столбцов одинаковой.

With myTable.Range
myTable.Select
Selection.Cells.DistributeWidth
End With

А мне надо выровнять по ширине все столбцы, кроме первого. И с этим я не могу справиться. Ещё раз повторяю - не программист я, может, кто-нибудь подскажет, как исправить эту мелочь и ошибки во всём коде исправит?
Спасибо заранее.

Последний раз редактировалось Vera111; 18.04.2011 в 17:32.
Vera111 вне форума Ответить с цитированием
Старый 18.04.2011, 19:16   #7
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,043
По умолчанию

1. код выложите с тегами
2. мне кажется лучше сначала всё сделать для всего одинаково, а затем занятся первым столбцом
Ципихович Эндрю вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск между символами в документе viter.alex Microsoft Office Word 7 24.05.2009 20:00
Excel. как удалить из таблицы все гиперссылки? и запретить что бы URL ими становились 9go Microsoft Office Excel 2 17.01.2009 10:19
Пароль на Вордовском документе... Гриха Безопасность, Шифрование 2 11.11.2008 17:40
Фон в документе Microsoft Word AleksP Microsoft Office Word 8 14.09.2008 17:55
Выделить все Михаил Юрьевич Общие вопросы Delphi 1 21.02.2008 23:12