Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Поиск и замена текста в документе Word

5.5K
07 апреля 2004 года
shiva
6 / / 06.04.2004
Столкнулся с проблемой замены текста. Исходный текст находится и выделяется, но не заменяется. Перепробывал различные варианты кода. Может быть есть какие-то установки в Word-e. Если кто-то сталкивался с подобными проблемами, напишите, пожалуйста

[word_obj.Documents.Application.Selection.Find.Text = "##1##"
word_obj.Documents.Application.Selection.Find.Replacement.Text = "11111"
word_obj.Documents.Application.Selection.Find.Wrap = wdFindContinue
word_obj.Documents.Application.Selection.Find.Execute Replace:=wdReplaceOne]
266
07 апреля 2004 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by shiva
Столкнулся с проблемой замены текста. Исходный текст находится и выделяется, но не заменяется. Перепробывал различные варианты кода. Может быть есть какие-то установки в Word-e. Если кто-то сталкивался с подобными проблемами, напишите, пожалуйста

[word_obj.Documents.Application.Selection.Find.Text = "##1##"
word_obj.Documents.Application.Selection.Find.Replacement.Text = "11111"
word_obj.Documents.Application.Selection.Find.Wrap = wdFindContinue
word_obj.Documents.Application.Selection.Find.Execute Replace:=wdReplaceOne]


Вот кусок кода, которым я через OLE коверкаю Word

Код:
WrdDc.Application.Selection.Find.ClearFormatting
            WrdDc.Application.Selection.Find.Replacement.ClearFormatting
            With WrdDc.Application.Selection.Find
              .Text = TxShape
              .Replacement.Text = UCase(Trim(TaInFld))
              .Forward = True
              .Wrap = wdFindContinue
              .Format = False
              .MatchCase = True
              .MatchWholeWord = True
              .MatchWildcards = False
              .MatchSoundsLike = False
              .MatchAllWordForms = False
            End With
            WrdDc.Application.Selection.Find.Execute Replace:=wdReplaceAll

НО в графических объектах (например, шейпах) это дело не прокатит, так как сам Word через поиск-замену их коверкает, а макросом - нет:{ .
Я долго бился над этой бедой и в итоге пришёл к следующему выводу:
надо бегать по шейпам и заменять в них текст, как метку. Тоесть, например:
 
Код:
If WrdDc.Shapes(I).TextFrame.HasText Then
 TxShape = UCase(.GetEngText)'МАХ Это мая приблуда, тоесть просто переменной  TxShape какое-то значение даю
 WrdDc.Shapes(I).TextFrame.TextRange = TxShape
End If
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог