![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Помогите.
Приведенным ниже кодом, ищу и заменяю текст в документе 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; |