![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 09.02.2009
Сообщений: 11
|
![]()
Привет всем.
Замучался уже с одной проблемой. Пытаюсь записать макрос для форматирования текста. Один макрос работает, другой - отказывается. Пробовал копировать код из второго в первый - ничего не помогает. Sub Макрос1() Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFor matting With Selection.Find .Text = "^v" .Replacement.Text = "</p><p align=justify>" .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute Replace:=wdReplaceAll Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFor matting With Selection.Find .Text = "^p" .Replacement.Text = "</p>^p<p align=justify>" .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute Replace:=wdReplaceAll End Sub А это второй макрос: Sub Макрос2() Selection.Find.ClearFormatting With Selection.Find.ParagraphFormat .SpaceBeforeAuto = False .SpaceAfterAuto = False .Alignment = wdAlignParagraphCenter End With Selection.Find.ParagraphFormat.Bord ers.Shadow = False Selection.Find.Replacement.ClearFor matting With Selection.Find .Text = "" .Replacement.Text = "<h2>^&</h2>" .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute Replace:=wdReplaceAll Во втором случае макрос должен найти полужирный курсивный текст и "обнять" его тэгами <h2></h2>. Если делать без макроса (тупая замена) все работает, как часы. В чем может быть проблема в макросе?? |
![]() |
![]() |
![]() |
#2 |
Балуюсь кодами
Участник клуба
Регистрация: 09.01.2009
Сообщений: 1,837
|
![]()
Попробуй вот так.
Код:
Лучше день потерять — потом за пять минут долететь!©
Последний раз редактировалось viter.alex; 09.02.2009 в 16:55. Причина: Исправил строку поиска, а то искала бы только русские слова |
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 09.02.2009
Сообщений: 11
|
![]()
К сожалению, та же проблема - вообще никакой реакции...
Текст как был до запуска, таким же и остался... |
![]() |
![]() |
![]() |
#4 |
Балуюсь кодами
Участник клуба
Регистрация: 09.01.2009
Сообщений: 1,837
|
![]()
Я исправил макрос в предыдущем посте. Попробуй. Там зачем-то был еще поиск по междустрочному расстоянию.
Лучше день потерять — потом за пять минут долететь!©
|
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 09.02.2009
Сообщений: 11
|
![]()
Все, что было - это результат записи макроса вордом...
По теме: я так понял, что ваш макрос ищет полужирный и курсивный текст, но как-то по-другому... Вообщем сейчас осталось две шняги: макрос находит нужные места, но обрамляет заданные слова излишними знаками - статья 105. убийство будет выглядеть как <h2>статья</h2><h2>105.</h2><h2>убийство</h2> Вот.. а хотелось бы, чтобы все выражение. И дополнительный параметр: выравнивание по центру полужирного и курсивного.. То есть, если в тексте встречается полужирный и он не по центру, то его надо заключить тегами <b></b>, а курсив соответсвенно <i></i>, а если по центру, то <h2></h2> |
![]() |
![]() |
![]() |
#6 |
Пользователь
Регистрация: 09.02.2009
Сообщений: 11
|
![]()
да и вопрос:
по умолчанию макрос записался как .Text = "", то есть любой параграф центрированный и полужирный а вы добавили "<[A-Za-zА-яЁё]@>" видимо набор любых букв. В последнем ответе замтели ошибку: цифры макрос пропускает, то есть будет <h2>статья</h2> <h2>убийство</h2>, а "105." - теряется Можно, конечно, дописать макрос дополнительной командой - удалить </h2>пробел<h2> |
![]() |
![]() |
![]() |
#7 |
Балуюсь кодами
Участник клуба
Регистрация: 09.01.2009
Сообщений: 1,837
|
![]()
Чтобы найти весь параграф, то напиши такое
(<[A-Za-zА-яЁё]@*)^0013 А строка замены будет такая <h2>\1</h2>^0013 Так в чем проблема? Задай три поиска в том же макросе, только с разными параметрами форматирования для искомого текста, и соответственно разными строками замены.
Лучше день потерять — потом за пять минут долететь!©
Последний раз редактировалось viter.alex; 09.02.2009 в 18:55. |
![]() |
![]() |
![]() |
#8 |
Балуюсь кодами
Участник клуба
Регистрация: 09.01.2009
Сообщений: 1,837
|
![]()
Это не набор любых букв, а отдельные слова латинскими или кириллическими буквами. Только слова! Пробелы, как ты убедился, не учитываются.
Лучше день потерять — потом за пять минут долететь!©
|
![]() |
![]() |
![]() |
#9 |
Пользователь
Регистрация: 09.02.2009
Сообщений: 11
|
![]()
Да, спасибо, вроде получилось.
Но не работало, пока я не добавил .Font.Bold=true и .MatchWildcards = True Вопрос по синтаксису запросов: где найти всю таблицу символов с расшифровкой, включая те, которые вы указали ^0013 \1 @* и т.д. Ведь макрос как я понял ищет только параграфы, и как вы справедливо указали, нужно сделать несколько поисков и замен в одном макросе.. Sub Макрос2() ' ' Макрос для сайта юридических услуг http://www.uconst.ru ' Макрос записан 09.02.2009 Admin ' Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFor matting With Selection.Find .Font.Bold=true .Text = "(<[A-Za-zА-яЁё]@*)^0013" .Replacement.Text = "<h2>\1</h2>^0013" .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = False .MatchWholeWord = False .MatchWildcards = True .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute Replace:=wdReplaceAll End Sub |
![]() |
![]() |
![]() |
#10 | |
Балуюсь кодами
Участник клуба
Регистрация: 09.01.2009
Сообщений: 1,837
|
![]() Цитата:
В справке все написано, но примеры плохие. Хорошие прикладные примеры, по которым я учился, здесь При постинге кода, используйте тег [code]Ваш_код[/code]. Это кнопка ![]()
Лучше день потерять — потом за пять минут долететь!©
Последний раз редактировалось viter.alex; 10.02.2009 в 12:49. |
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
форматирование текста с помощью 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 |