|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
09.02.2009, 15:30 | #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>. Если делать без макроса (тупая замена) все работает, как часы. В чем может быть проблема в макросе?? |
09.02.2009, 16:33 | #2 |
Балуюсь кодами
Участник клуба
Регистрация: 09.01.2009
Сообщений: 1,837
|
Попробуй вот так.
Код:
Лучше день потерять — потом за пять минут долететь!©
Последний раз редактировалось viter.alex; 09.02.2009 в 16:55. Причина: Исправил строку поиска, а то искала бы только русские слова |
09.02.2009, 16:43 | #3 |
Пользователь
Регистрация: 09.02.2009
Сообщений: 11
|
К сожалению, та же проблема - вообще никакой реакции...
Текст как был до запуска, таким же и остался... |
09.02.2009, 16:56 | #4 |
Балуюсь кодами
Участник клуба
Регистрация: 09.01.2009
Сообщений: 1,837
|
Я исправил макрос в предыдущем посте. Попробуй. Там зачем-то был еще поиск по междустрочному расстоянию.
Лучше день потерять — потом за пять минут долететь!©
|
09.02.2009, 17:17 | #5 |
Пользователь
Регистрация: 09.02.2009
Сообщений: 11
|
Все, что было - это результат записи макроса вордом...
По теме: я так понял, что ваш макрос ищет полужирный и курсивный текст, но как-то по-другому... Вообщем сейчас осталось две шняги: макрос находит нужные места, но обрамляет заданные слова излишними знаками - статья 105. убийство будет выглядеть как <h2>статья</h2><h2>105.</h2><h2>убийство</h2> Вот.. а хотелось бы, чтобы все выражение. И дополнительный параметр: выравнивание по центру полужирного и курсивного.. То есть, если в тексте встречается полужирный и он не по центру, то его надо заключить тегами <b></b>, а курсив соответсвенно <i></i>, а если по центру, то <h2></h2> |
09.02.2009, 17:25 | #6 |
Пользователь
Регистрация: 09.02.2009
Сообщений: 11
|
да и вопрос:
по умолчанию макрос записался как .Text = "", то есть любой параграф центрированный и полужирный а вы добавили "<[A-Za-zА-яЁё]@>" видимо набор любых букв. В последнем ответе замтели ошибку: цифры макрос пропускает, то есть будет <h2>статья</h2> <h2>убийство</h2>, а "105." - теряется Можно, конечно, дописать макрос дополнительной командой - удалить </h2>пробел<h2> |
09.02.2009, 18:52 | #7 |
Балуюсь кодами
Участник клуба
Регистрация: 09.01.2009
Сообщений: 1,837
|
Чтобы найти весь параграф, то напиши такое
(<[A-Za-zА-яЁё]@*)^0013 А строка замены будет такая <h2>\1</h2>^0013 Так в чем проблема? Задай три поиска в том же макросе, только с разными параметрами форматирования для искомого текста, и соответственно разными строками замены.
Лучше день потерять — потом за пять минут долететь!©
Последний раз редактировалось viter.alex; 09.02.2009 в 18:55. |
09.02.2009, 19:44 | #8 |
Балуюсь кодами
Участник клуба
Регистрация: 09.01.2009
Сообщений: 1,837
|
Это не набор любых букв, а отдельные слова латинскими или кириллическими буквами. Только слова! Пробелы, как ты убедился, не учитываются.
Лучше день потерять — потом за пять минут долететь!©
|
10.02.2009, 11:57 | #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.02.2009, 12:30 | #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 |