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

Вниз

Поиск-замена в Word средствами делфи   Найти похожие ветки 

 
sapsi   (2005-02-04 13:20) [0]

Добрый день.
Как реализовать сабж?
Делаю примерно следующее:

  wordapp:=CreateOleObject("word.Application");
  worddoc:=wordApp.documents.Add;
  wordapp.Selection.WholeStory;
  worddoc.Content.Find.ClearFormatting;
  worddoc.Content.Find.Replacement.ClearFormatting;
  worddoc.Content.Find.Text:="111";
  worddoc.Content.Find.Replacement.Text:="222";
  worddoc.Content.Find.MatchCase:= False;
  worddoc.Content.Find.Execute(wdReplaceAll);

не ищет "111", пробовал и по-другому, что-то вроде:

worddoc.Content.Find.execute(text:="111",ReplaceWith:="222",replace:=wdReplaceAll);

Все равно не работает.
Кто подскажет почему?
Спасибо.


 
Alezy ©   (2005-02-04 17:19) [1]

Надо просто пользоваться правильными свойствами объектной модели MS Word. Ниже приведен пример замены, реализованный на VBA, думаю перевести его на Delphi не составит никакого труда. Вообще автоматизацию офиса лучше изучать с помощью VBA и переносить готовые куски кода в другие среды разработки.

Sub TestReplace()
 Dim wordApp As Word.Application
 Dim worddoc As Word.Document
 Set wordApp = CreateObject("word.Application") "создаем объект Word
 Set worddoc = wordApp.Documents.Add "создаем новый документ
 
 With wordApp.Selection "добавляем в документ данные!!!
   .TypeText Text:="Test1111Test"
   .TypeParagraph
   .TypeText Text:="Test2222Test"
   .TypeParagraph
   .TypeText Text:="Test3333Test"
 End With
 
 With wordApp.Selection.Find "заполняем опции замены
   .ClearFormatting
   .Replacement.ClearFormatting
   .Text = "111"
   .Replacement.Text = "222"
   .Wrap = wdFindContinue
   .Format = False
   .MatchCase = False
   .MatchWholeWord = False
   .MatchWildcards = False
   .MatchSoundsLike = False
   .MatchAllWordForms = False
   .Execute Replace:=wdReplaceAll "меняем всё
 End With
 worddoc.SaveAs ("c:\AAA.doc") "сохраняем результаты или получем их другим способом
 worddoc.Close "закрываем документ!!!
 Set wordApp = Nothing "выгружаем Word
End Sub


 
GanibalLector ©   (2005-02-06 22:31) [2]

var WordApp:OleVariant;
begin
WordApp := CreateOleObject("Word.Application");
  try
  WordApp.Documents.Open("C:\2.doc");
  wordapp.visible:=true;

   WordApp.Selection.Find.ClearFormatting;
   WordApp.Selection.Find.Replacement.ClearFormatting;
   WordApp.Selection.Find.Replacement.Text:="GanibalLector";
   WordApp.Selection.Find.Text := "L";
   WordApp.Selection.Find.Forward := True;
   WordApp.Selection.Find.Wrap := 1;
   WordApp.Selection.Find.Format := False;
   WordApp.Selection.Find.MatchCase := False;
   WordApp.Selection.Find.MatchWholeWord := False;
   WordApp.Selection.Find.MatchWildcards := False;
   WordApp.Selection.Find.MatchSoundsLike := False;
   WordApp.Selection.Find.MatchAllWordForms := False;

   WordApp.Selection.Find.Execute(Replace := 2);

  finally
    WordApp:=UnAssigned;
 end;

end;



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

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

Наверх




Память: 0.47 MB
Время: 0.04 c
14-1130082809
Layner
2005-10-23 19:53
2005.11.13
Господа, помогите отправить SMS в Киев (38 067 777xxxx)


14-1129888989
konda
2005-10-21 14:03
2005.11.13
Глюки при загрузке компьютера


1-1129622152
Frozzen
2005-10-18 11:55
2005.11.13
xml и Oject Inspector


6-1117993973
Vanek_TV
2005-06-05 21:52
2005.11.13
auth smtp


2-1130169036
Drex
2005-10-24 19:50
2005.11.13
Указатель типа Pointer - читаем и записываем байты…