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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.01.2013, 15:33   #1
Gilvanov
 
Регистрация: 29.01.2013
Сообщений: 3
По умолчанию Уменьшение шрифта пустых строк в документе

Добрый день! Помогите, плиз, у меня следующая ситуация - есть документ из 60 листов, в котором нужно уменьшить шрифт пустых строк. Как можно это сделать не вручную?
Gilvanov вне форума Ответить с цитированием
Старый 29.01.2013, 17:26   #2
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию

Если все пустые строки — это только знак абзаца ¶ (без пробелов), можно так:
Код:
Sub Макрос1()
Dim p As Word.Paragraph

    For Each p In ActiveDocument.Paragraphs
        With p.Range.Characters
                If .Count = 1 Then      'если абзац пуст (только 1 знак: абзац)
                    .Last.Font.Size = 6 'высота (кегль) шрифта
'                Else
'                    MsgBox "Этот абзац не пустой."
                End If
        End With
    Next

End Sub
Пробуйте.

Последний раз редактировалось Sasha_Smirnov; 29.01.2013 в 18:28.
Sasha_Smirnov вне форума Ответить с цитированием
Старый 29.01.2013, 17:30   #3
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

Gilvanov, выложите документ Word с примерными данными и на основе этого документа поясните, что должен сделать макрос.
Скрипт вне форума Ответить с цитированием
Старый 29.01.2013, 18:50   #4
Gilvanov
 
Регистрация: 29.01.2013
Сообщений: 3
По умолчанию

Только добрался до дома. Выкладываю страницу файла.
В документ вставлен список балансовых счетов. Между абзацев остались пустые строки, вот у них и нужно уменьшить шрифт.
Вложения
Тип файла: doc Пример.doc (53.5 Кб, 16 просмотров)
Gilvanov вне форума Ответить с цитированием
Старый 29.01.2013, 18:57   #5
Gilvanov
 
Регистрация: 29.01.2013
Сообщений: 3
По умолчанию

Sasha_Smirnov, спасибо большое Все сработало как надо.
Скрипт спасибо за отзывчивость.
Gilvanov вне форума Ответить с цитированием
Старый 29.01.2013, 19:28   #6
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

Макрос работает с таблицей, в которой находится курсор.
Если код будет медленно работать, то можно сначала перейти в режим "Черновик" (в Word 2010 в правом нижнем углу есть кнопки для выбора режима). Если вручную неудобно переходить, то можно добавить строку в код, которая будет это делать автоматически. А затем можно обратно возвращаться в нужный режим.
Код:
Sub Procedure_1()

    Dim myTable As Word.Table
    Dim i As Long
    
    '1. Даём таблице, в которой находится курсор, имя "myTable".
        'Через это имя будем обращаться к таблице.
    Set myTable = Selection.Tables(1)

    'С помощью цикла с переменной "i" просматриваем все строки в таблице.
    For i = 1 To myTable.Rows.Count Step 1
        
        '2. Смотрим, сколько символов в строке таблицы.
        'myTable.Rows(i).Range.Text - это текст во всей строке таблицы.
        'С помощью "Len" узнаём сколько символов в строке.
            'В каждой ячейке таблицы всегда есть два символа:
                '1) один символ видно, если включен режим отображения
                    'непечатаемых символов. Этот символ в виде кружка.
                    'Порядковый номер в ANSI-таблице 13;
                '2) второй символ вообще никогда не видно.
                    'Порядковый номер в ANSI-таблице 7;
        'myTable.Rows(i).Cells.Count - количество символов в ячейке.
        '+ 2, т.к. в конце каждой строки есть ещё два символа, как и в ячейке.
        'Если в строке только специальные символы, то значит, что строка пустая.
        If Len(myTable.Rows(i).Range.Text) = myTable.Rows(i).Cells.Count * 2 + 2 Then
            '3. Изменяем размер шрифта в строке.
            myTable.Rows(i).Range.Font.Size = 6
            '4. Изменяем высоту строки.
            'wdRowHeightExactly - это "точно".
            myTable.Rows(i).HeightRule = wdRowHeightExactly
            'CentimetersToPoints(0.2) - в скобках размеры указаны в сантиметрах.
            myTable.Rows(i).Height = Application.CentimetersToPoints(0.2)
        End If
    Next i

End Sub

Примечание

Код может не будет работать, если в таблице будут объединённые ячейки.

Последний раз редактировалось Скрипт; 29.01.2013 в 19:33.
Скрипт вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание поля в документе word для автоматического изменения шрифта текста sergey1122 Microsoft Office Word 4 19.07.2012 10:27
Заполнение пустых строк.. Balina Microsoft Office Excel 9 02.12.2009 11:49
Уменьшение шрифта пустого абзаца на один пункт. Busine2009 Microsoft Office Word 5 04.06.2009 19:50
Вставка пустых строк в FastReport'е Boatswain БД в Delphi 1 13.11.2008 14:41