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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.05.2009, 18:36   #1
andreyGO
 
Регистрация: 22.05.2009
Сообщений: 6
Вопрос Обработка отметок с информацией о стиле абзаца

Вот возникла задачка:
Между "@" и "=" в начале абзацев (не всех) расставлены стили, которые необходимо применить к абзацам, а саму отметку стереть. Вот, например: @MIH_HEAD_F = АУДИТОРСКОЕ ЗАКЛЮЧЕНИЕ. После работы макроса получаем:"АУДИТОРСКОЕ ЗАКЛЮЧЕНИЕ" стилем MIH_HEAD_F. При этом в тексте могут встречаться и простые @ (например e-mail) без знака =. Все возможные стили уже в ворде. Вордовский поиск с выделением по ключу @*= работать не хочет(( стили в вба расставляются как Selection.Style = ActiveDocument.Styles("сюда вставляется название стиля"), если что.
Буду очень признателен за помощь!
andreyGO вне форума Ответить с цитированием
Старый 25.05.2009, 09:51   #2
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Вы бы исходный документ приложили. Хотя бы часть. Тогда можно и сделать. Проблемы не вижу.
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 25.05.2009, 10:24   #3
andreyGO
 
Регистрация: 22.05.2009
Сообщений: 6
По умолчанию

Благодарю,что откликнулись!
Вот документ с примененными стилями. На обработку он соответственно будет поступать в стиле "Body Text". Пометки со стилями генерируются сторонней программой. Поиск конструкций "@ ... =" организовал с помощью записи стандартного поиска "/@*=". Просто знаний VBA не хватает, чтобы включить процедуру замены стилей в тело поиска (например: Selection.Paragraphs.Style = ActiveDocument.Styles("Body Text"))!
Вложения
Тип файла: doc WORD_STYLE.doc (47.0 Кб, 16 просмотров)
andreyGO вне форума Ответить с цитированием
Старый 25.05.2009, 10:28   #4
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

А что делать в случае, если определение стиля есть, а текста нет? Как, например, в первых двух абзацах?
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 25.05.2009, 10:29   #5
andreyGO
 
Регистрация: 22.05.2009
Сообщений: 6
По умолчанию

Применять стиль к пустому абзацу
andreyGO вне форума Ответить с цитированием
Старый 25.05.2009, 11:04   #6
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию Вот, что ли?

Попробуйте этот макрос. Он работает, но мне интересно, может быть он удаляет и что-то лишнее. Шаблон для поиска очень универсален, поэтому могут быть ложные срабатывания.
Код:
Sub ApplyStyleNameFromDescription()
  On Error Resume Next
  Dim sStyleName$
  With ActiveDocument.Range.Find
    .Text = "\@*=": .MatchWildcards = True
    While .Execute
      'Определяем имя стиля из найденного текста, убирая @, = и обрезая пробелы
      sStyleName = Trim(Replace(Replace(.Parent.Text, "@", ""), "=", ""))
      'Применяем стиль к абзацу, в котором найден текст
      .Parent.Paragraphs(1).Range.ParagraphFormat.Style = ActiveDocument.Styles(sStyleName)
      'Обработчик ошибки, на тот случай, если стиль в документе отсутствует. Если ошибки нет,
      'то найденный текст удаляем.
      If Err.Number = 5941 Then Err.Clear Else: .Parent.Delete
    Wend
  End With
End Sub
Лучше день потерять — потом за пять минут долететь!©

Последний раз редактировалось viter.alex; 25.05.2009 в 15:27.
viter.alex вне форума Ответить с цитированием
Старый 25.05.2009, 11:21   #7
andreyGO
 
Регистрация: 22.05.2009
Сообщений: 6
По умолчанию

Спасибо ОГРОМНОЕ!
Все замечательно работает!
andreyGO вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Символ абзаца Dmittrii Microsoft Office Word 3 17.03.2009 12:13
что делать если комп хочет отформатировать карту памяти с информацией? Александр Катаев Компьютерное железо 1 14.03.2009 14:11
Символ абзаца Word 2003 dreack Microsoft Office Word 5 01.03.2009 14:17
Определить, сколько учеников класса не имеют отметок ниже четырех HOOKER Помощь студентам 6 08.10.2008 19:50
Файл с информацией werser Общие вопросы Delphi 7 24.05.2008 20:55