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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.02.2009, 16:37   #21
Deler85
 
Регистрация: 26.02.2009
Сообщений: 3
По умолчанию

Цитата:
Сообщение от viter.alex Посмотреть сообщение
Вот так это можно сделать. Ищет только целые абзацы. Если абзац является списком, то номер учитывается. Пробуйте. А что, других средств конвертить в html нет? Вообще-то, для списков нужно делать <ol> или <ul>
Код:
Sub ReplaceIncludingListNumbers()
  Application.ScreenUpdating = False
  Dim rs As String
  rs = "<h2>\1</h2>\2"
  Selection.HomeKey wdStory
  With Selection.Find
    .ClearFormatting
    .Replacement.ClearFormatting
    .Text = "(<[A-Za-zА-яЁё]@*)(^0013)"
    .Forward = True
    .Wrap = wdFindContinue
    .Format = True
    .MatchCase = False
    .MatchWholeWord = False
    .MatchWildcards = True
    .MatchSoundsLike = False
    .MatchAllWordForms = False
    While .Execute
      .Execute replacewith:=Replace(rs, "\1", .Parent.Range.ListFormat.ListString & " " & "\1"), Replace:=wdReplaceOne
      Selection.Collapse wdCollapseEnd
    Wend
  End With
  Application.ScreenUpdating = True: Application.ScreenRefresh
End Sub
код работает спасибо, но при этом при экспорте его из ворда получается двойная нумерация

"<p>однажды в студеную зимнюю пору</p>
1 <p>1 из лесу вышел </p>
2 <p>2 вечерело </p>"

возможно и от этого как-то избавится
Deler85 вне форума Ответить с цитированием
Старый 26.02.2009, 16:43   #22
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Цитата:
Сообщение от Deler85 Посмотреть сообщение
код работает спасибо, но при этом при экспорте его из ворда получается двойная нумерация

"<p>однажды в студеную зимнюю пору</p>
1 <p>1 из лесу вышел </p>
2 <p>2 вечерело </p>"

возможно и от этого как-то избавится
А может сначала экспортировать, а затем запускать макрос? Тогда можно использовать самый первый макрос.
или перед строкой Application.ScreenUpdating = True: Application.ScreenRefresh вставить такой код
Код:
  Dim oPar As Paragraph
  For Each oPar In ActiveDocument.Paragraphs
    oPar.Range.ListFormat.RemoveNumbers
  Next
Лучше день потерять — потом за пять минут долететь!©

Последний раз редактировалось viter.alex; 26.02.2009 в 16:57.
viter.alex вне форума Ответить с цитированием
Старый 26.02.2009, 17:10   #23
Deler85
 
Регистрация: 26.02.2009
Сообщений: 3
По умолчанию

Цитата:
Сообщение от viter.alex Посмотреть сообщение
А может сначала экспортировать, а затем запускать макрос? Тогда можно использовать самый первый макрос.
или перед строкой Application.ScreenUpdating = True: Application.ScreenRefresh вставить такой код
Код:
  Dim oPar As Paragraph
  For Each oPar In ActiveDocument.Paragraphs
    oPar.Range.ListFormat.RemoveNumbers
  Next
Да работает, большое спасибо!
На этапе добавления форматировать нельзя, а в получающемся документе текст уже в коде.

Последний раз редактировалось Deler85; 26.02.2009 в 17:16.
Deler85 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
форматирование текста с помощью CFontDialog TiLKiSS Общие вопросы C/C++ 5 27.12.2008 21:48
Форматирование текста MAcK Общие вопросы Delphi 3 03.04.2008 11:38
Форматирование текста в RichEdit. Air Общие вопросы Delphi 2 03.03.2008 15:15
Форматирование текста rusif Помощь студентам 1 17.12.2007 22:28
Форматирование текста в Delphi Кириллл Общие вопросы Delphi 3 05.06.2007 14:16