Форум: "Corba";
Текущий архив: 2005.11.13;
Скачать: [xml.tar.bz2];
ВнизПоиск-замена в 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 вся ветка
Форум: "Corba";
Текущий архив: 2005.11.13;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.036 c