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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.03.2013, 20:21   #1
caute
Форумчанин
 
Регистрация: 27.10.2009
Сообщений: 277
По умолчанию преобразование автономеров в простой текст

есть документ из Файн ридера 11, в котором куча автонумерованных списков. Можно ли их преобразовать в обычные номера с пробелами вместо табулиций (которые стоят после автономера)?
caute вне форума Ответить с цитированием
Старый 07.03.2013, 22:45   #2
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

Код:
Sub Procedure_1()

    Dim myParagraph As Word.Paragraph
    Dim myLength As Long
    Dim i As Long
    
    'Можно добавить в код переход в режим "Черновик" и
        'отключение проверки правописания, чтобы код работал быстрее.
    
    'Двигаемся с конца в начало, иначе номера списков
        'будут меняться.
    For i = ActiveDocument.ListParagraphs.Count To 1 Step -1
    
        'Даём VBA-имя "myParagraph" абзацу, в котором есть автоматический номер,
            'т.к. потом мы преобразуем абзац-список в обычный абзац
            'и не сможем получить доступ к абзацу-списку.
        Set myParagraph = ActiveDocument.ListParagraphs(i)
        
        'Узнаём сколько символов в автоматическом номере, чтобы
            'потом посмотреть после определённого символа:
            'есть знак табуляции или нет.
        myLength = Len(myParagraph.Range.ListFormat.ListString) + 1
        
        'Превращаем автоматический номер в текст.
        myParagraph.Range.ListFormat.ConvertNumbersToText
        
        'Смотрим, есть ли знак табуляции после номера или нет.
        'Chr(9) - это знак табуляции. У знака табуляции в таблице "ANSI"
            'порядковый номер 9.
        If myParagraph.Range.Characters(myLength).Text = Chr(9) Then
            'Заменяем знак табуляции на пробел.
            myParagraph.Range.Characters(myLength).Text = " "
        End If
        
    Next i
    
End Sub
Скрипт вне форума Ответить с цитированием
Старый 08.03.2013, 00:34   #3
caute
Форумчанин
 
Регистрация: 27.10.2009
Сообщений: 277
По умолчанию

отлично работает! спасибо
caute вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Преобразование ColorBox цвета в текст mazdakilla Компоненты Delphi 5 16.02.2013 17:10
Преобразование текст. формата в дату oleg_sh Microsoft Office Excel 8 07.10.2011 18:15
Сохранить в текстовый файл текст из Memo и текст из нескольких Edit misher Общие вопросы Delphi 5 02.01.2011 15:37
написал простой текстовый редактор но он не распознает русский текст betirsolt Общие вопросы Delphi 14 24.07.2009 12:58
Как узнать какой текст выделен в текст поле mogul82 JavaScript, Ajax 2 02.11.2008 16:32