Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.06.18;
Скачать: CL | DM;

Вниз

Word : Поиск и замена   Найти похожие ветки 

 
Yurij-7   (2005-07-05 18:56) [0]

Вечер добрый
Уважаемые мастера, прошу помочь в следуюей ситуации :
есть докумет ворды, в нем есть надписи (рамочки) я туда пишу слово (#FIO#), которое пытаюсь найти и заменить на значение например из EDIT1.TEXT, но вот проблема  если #FIO# в теле документа то его находит и меняет, а вот если в надписи то ничего неполучаеться, вот пример кода:
word.activedocument.range.find.execute (FindText := "#FIO#", replacewith := edit1.Text, replace := wdReplaceAll);

Заранее благодарен.


 
Yurij-7   (2005-07-06 10:52) [1]

ну неужели никто незнает, или может я неправильно задал  вопрос?


 
Yurij-7   (2005-07-06 11:35) [2]

или всетаки лучше использовать закладки?


 
Virgo_Style ©   (2005-07-06 11:42) [3]

Мне это решение не нравится, скорее всего есть более красивое, но.. работает же %-)

var oleI: OleVariant; I: integer;
...
//Здесь твой поиск (по документу)

//А здесь - по надписям
for I:=1 to WApp.ActiveDocument.Shapes.Count do
begin
 oleI:=I;
 WApp.ActiveDocument.Shapes.Item(oleI).Select(EmptyParam);

//Здесь твой поиск по надписям

end;


 
Yurij-7   (2005-07-06 11:52) [4]

а что можете посоветовать? я просто только учусь, и может изначально выбираю ложный путь?
я так понимаю что если мне надо изменить что то в надписи то ее надо выделить??
спасибо.


 
Yurij-7   (2005-07-06 13:15) [5]

Virgo_Style ©   (06.07.05 11:42) [3]  - нехочет работать :((


 
Virgo_Style ©   (2005-07-06 13:32) [6]

Yurij-7   (06.07.05 13:15) [5]
нехочет работать


C часу до двух - перерыв на обед 8-)

Что говорит-то?


 
Yurij-7   (2005-07-06 13:41) [7]

Virgo_Style ©   (06.07.05 13:32) [6]  так вроде 12:30 :)))
делаю примерно так:

word.documents.open (pat);
for I:=1 to word.ActiveDocument.Shapes.Count do
begin
oleI:=I;
word.ActiveDocument.Shapes.Item(oleI).Select(EmptyParam);

//Здесь твой поиск по надписям
word.activedocument.Shapes.find.execute (FindText := "#pbcard#", replacewith := edit1.Text, replace := wdReplaceAll);
end;

а оно пишет типа неподдерживаеться автоматизацией :((
пдскажите пжл что делать.
спасибо


 
Virgo_Style ©   (2005-07-06 13:52) [8]

На какой строке пишет? И для какой версии TWordApplication? У меня для 2000.

"Поиск по надписям" я делал так:
 Result:=WApp.Selection.Find.Execute(.....),  Word.ActiveDocument.Shapes у меня не имеет ни метода, ни свойства Find.


 
Yurij-7   (2005-07-06 15:57) [9]

я Ворд запускаю через CreateOleObject
именно то что вы подсказали и работает, жаль что долговато ,просто я еще добавлял activedocument и через то отказывалось работать.

Virgo_Style ©   (06.07.05 13:52) [8]  Огромное спасибо !!!


 
Yurij-7   (2005-07-07 16:33) [10]

еще возник вопросик, всего порядка 60 надписей, и сам документ формируеться очень долго, может надо обращаться до конкретного итема (точнее надписи)?
спасибо.


 
Yurij-7   (2005-07-08 17:15) [11]

нашел выход. может кому интересно будет, всего то надо было надпись отправить на задный план, и уже получаеться что владельцем идентификатора являеться не надпись а сам документ



Страницы: 1 вся ветка

Текущий архив: 2006.06.18;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.192 c
9-1130206311
JUS
2005-10-25 06:11
2006.06.18
Зацените мою демку


1-1147597832
Monax
2006-05-14 13:10
2006.06.18
Как установить размер страницы при печати через Printer


1-1147409869
Kostromich
2006-05-12 08:57
2006.06.18
TWebBrowser Навигация


1-1147112151
Fl@sh
2006-05-08 22:15
2006.06.18
из query в TMemorySream и обратно


4-1142928962
Макс (гость)
2006-03-21 11:16
2006.06.18
Как определить handle trey я, а там pop up меню значка