![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Поиск-замена в Word средствами делфи [Delphi, Windows]
sapsi © (2005-02-04 13:20:00)Добрый день.
Как реализовать сабж?
Делаю примерно следующее:
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);
Все равно не работает.
Кто подскажет почему?
Спасибо.
GanibalLector (2005-02-06 22:31:00) [1]
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;
Alezy (2005-02-04 17:19:00) [2]Надо просто пользоваться правильными свойствами объектной модели 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