|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
поиск и замена текста в автофигурах Word
Помогите.
Приведенным ниже кодом, ищу и заменяю текст в документе word: Код:
OWord(TFileName); {открываю документ} SeekInsert(SText, IText); {ищем, заменяем} CWord(TFileName); {закрываем документ} ... function SeekInsertInText(SText, IText : string):boolean; {функция поиска и замены} begin WordApp1.Selection.Find.ClearFormat ting; WordApp1.Selection.Find.Replacement .ClearFormatting; WordApp1.Selection.Find.Text:=SText ; WordApp1.Selection.Find.Replacement .Text:=IText; WordApp1.Selection.Find.Forward:=Tr ue; WordApp1.Selection.Find.Wrap:=wdFin dContinue; WordApp1.Selection.Find.Format:=Fal se; WordApp1.Selection.Find.MatchCase:= False; WordApp1.Selection.Find.MatchWholeW ord:=False; WordApp1.Selection.Find.MatchWildca rds:=False; WordApp1.Selection.Find.MatchAllWor dForms:=False; WordApp1.Selection.Find.Execute(Rep lace:=wdReplaceAll); end; Всё хорошо ищет и заменяет. НО! моя функция игнорирует надписи, или если хотите - автофигуры. Т.к. пока я дилетант во взаимодействии word'a и delphi, подскажите как можно решить эту проблему. И чтобы сразу выкинуть мусор и хлам из темы просьба не писать "умным": - погугли, там полно примеров; - запиши макрос в word и посмотри; - не могу понять что ты хочешь; Была идея создания макроса в Word и запуска его программно. Но, тогда каким образом ввести параметры поиска и замены для макроса из delphi? ЗАРАНЕЕ, ОГРОМНОЕ СПАСИБО! Последний раз редактировалось Admin, 18.04.2011 в 15:00. |
#2
|
|||
|
|||
to Admin простите я больше так не буду.
продолжаем раздваивать личность. "реализовал" идею с макросами. но опять НО. для ясности сначала: Код:
function SeekInsertInAllDoc(SText, IText : string):boolean; const vbext_ct_StdModule=1; msoBarFloating=4; msoControlButton=1; var cm, cb, btn: Variant; s: string; begin cm:=wordApp1.VBE.VBProject.Item(1).VBComponents.Add(vbext_ct_StdModule).CodeModule; s:='Sub Макрос2() '+ 'Selection.Find.ClearFormatting '+ 'Selection.Find.Replacement.ClearFormatting '+ 'With Selection.Find '+ '.Text = '+STExt+' '+ '.Replacement.Text = '+IText+' '+ '.Forward = True '+ '.Wrap = wdFindContinue '+ '.Format = False '+ '.MatchCase = False '+ '.MatchWholeWord = False '+ '.MatchWildcards = False '+ '.MatchSoundsLike = False '+ '.MatchAllWordForms = False '+ 'End With '+ 'Selection.Find.Execute Replace:=wdReplaceAll '+ 'End Sub ';{СКРИПТ} cm.AddFromString(s); s:=cm.name; cb:=wordApp1.commandBars.add(Name:='Временная панель', Position:=msoBarFloating); cb.enabled:=true; cb.visible:=true; btn:=wordApp1.commandBars.Item['Временная панель'].Controls.add(type:=msoControlButton, ID:=1); btn.caption:='Временная кнопка'; btn.onAction:=cm.Name+'.Макрос1'; btn.execute; btn.delete; cb.delete; wordApp1.VBE.VBProjects.Items(1).VBComponents.Remove(cm.parent); end; вот такой функцией создаю макрос - поиска и замены в word. описать поэтапно что делает функция не могу, так как нашел данный код во всемирной паутине, содрал, немного изменил под себя. В двух словах: 1. описываем макрос; 2. создаем кнопку макроса; 3. нажимаем на нее; 4. ищем заменяем; 5. удаляем кнопку и макрос; как то так. знаю что пункты 2, 3, 4 лишние, но во избежании еще большей путаницы, оставил все как есть. теперь ПРОБЛЕМА!!! после запуска программки и соответствующих действий, выдает ошибку Method 'VBProject' not supported by automation object. как это переводится я знаю (кстати если заменить слово object на abject, интересный перевод получается))) но что это значит и как его приготовить я не понимаю. О МОЛЧАЛИВЫЕ МУДРЕЦЫ окиньте взором своим текст мой, и ПОМОГИТЕ. |
#3
|
|||
|
|||
перевод:
метод "'VBProject'" не поддерживается объектом автоматизации ну это как: Button1.Navigate; |