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