Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Технологии
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 18.04.2011, 14:56
shakycucumber shakycucumber вне форума
Прохожий
 
Регистрация: 18.04.2011
Сообщения: 2
Репутация: 10
По умолчанию поиск и замена текста в автофигурах 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  
Старый 19.04.2011, 02:26
shakycucumber shakycucumber вне форума
Прохожий
 
Регистрация: 18.04.2011
Сообщения: 2
Репутация: 10
По умолчанию

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  
Старый 19.04.2011, 09:14
einstein einstein вне форума
Начинающий
 
Регистрация: 02.09.2010
Адрес: Город
Сообщения: 143
Репутация: -4653
По умолчанию

перевод:
метод "'VBProject'" не поддерживается объектом автоматизации
ну это как:
Button1.Navigate;
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 03:57.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter