powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBA_Word2003: обработать в цикле содержимое всех надписей документа
2 сообщений из 2, страница 1 из 1
VBA_Word2003: обработать в цикле содержимое всех надписей документа
    #39392072
Фотография neznajka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Собственно, сабж не получается :)
В документе имеется несколько Надписей ( ShapeRange ), в каждой из которых имеется 1 таблица. Часть её ячеек заполнена синим шрифтом (бланк), а другая часть - черным.
Необходимо всего-то: перед выводом на печать убрать границы у каждой таблицы и заменить синий шрифт на белый (чёрный не трогаем) - это нужно для печати на готовом бланке.
Кое-что всё-таки удалось автоматизировать - если заранее стать в нужную Надпись и сделать полное выделение её содержимого (Ctrl+A), то следующий макрос осуществляет всё необходимое:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
    For Each tbl In Selection.Tables
    With tbl
        .Borders.Enable = False
        .Borders.Shadow = False
    End With
    Next tbl

    For Each wrd In Selection.Words
      With wrd
        If .Font.ColorIndex = wdBlue Then
            .Font.ColorIndex = wdWhite
        End If
       End With
    Next wrd


Хотелось бы ещё, чтобы и переход выделения от одной Надписи к следующей (обход всех Надписей документа) также осуществлялся автоматически. А вот это как раз сделать и не получается - в режиме записи макросов Надписи не выделяются... :(
Пробовал и вручную через ShapeRange - тоже не выходит. Помогите с этим переходом, пожалуйста.
Прилагаю тестовый упрощённый doc-файл.
...
Рейтинг: 0 / 0
VBA_Word2003: обработать в цикле содержимое всех надписей документа
    #39392118
Фотография neznajka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ур-ря, методом тыка и перебора возможных вариантов мне самому удалось решить вопрос.
Может, ещё кому-нибудь пригодится, привожу макрос:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
For Each shp In ActiveDocument.Shapes
  shp.TextFrame.TextRange.Select
    For Each tbl In Selection.Tables
    With tbl
        .Borders.Enable = False
        .Borders.Shadow = False
    End With
    Next tbl

    For Each wrd In Selection.Words
      With wrd
        If .Font.ColorIndex = wdBlue Then
            .Font.ColorIndex = wdWhite
        End If
       End With
    Next wrd
Next shp
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBA_Word2003: обработать в цикле содержимое всех надписей документа
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]