Заменить строки в файле Word



Автор: [NIKEL]
WEB-сайт: http://delphibase.endimus.com

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Заменить строки в файле Word
Функция заменяет файлы в документе word с опциями поиска и замены
Зависимости: ComObj
Автор:       [NIKEL], [email protected], Norilsk
Copyright:   Some help
Дата:        15 сентября 2002 г.
***************************************************** }
uses ComObj;
// Флаги замены
type
TWordReplaceFlags = set of (wrfReplaceAll, wrfMatchCase, wrfMatchWildcards);
function WordStringReplace(ADocument: TFileName; SearchString, ReplaceString:
string; Flags: TWordReplaceFlags): Boolean;
const
wdFindContinue = 1;
wdReplaceOne = 1;
wdReplaceAll = 2;
wdDoNotSaveChanges = 0;
var
WordApp: OLEVariant;
begin
Result := False;
{ Существует ли файл }
if not FileExists(ADocument) then
begin
ShowMessage('Файл не найден!');
Exit;
end;
{ Создаем OLE объект }
try
WordApp := CreateOLEObject('Word.Application');
except
on E: Exception do
begin
E.Message := 'Word недоступен';
raise;
end;
end;
try
{ Прячем Word }
WordApp.Visible := False;
{ Открываем документ }
WordApp.Documents.Open(ADocument);
{ Инициализируем параметры}
WordApp.Selection.Find.ClearFormatting;
WordApp.Selection.Find.Text := SearchString;
WordApp.Selection.Find.Replacement.Text := ReplaceString;
WordApp.Selection.Find.Forward := True;
WordApp.Selection.Find.Wrap := wdFindContinue;
WordApp.Selection.Find.Format := False;
WordApp.Selection.Find.MatchCase := wrfMatchCase in Flags;
WordApp.Selection.Find.MatchWholeWord := False;
WordApp.Selection.Find.MatchWildcards := wrfMatchWildcards in Flags;
WordApp.Selection.Find.MatchSoundsLike := False;
WordApp.Selection.Find.MatchAllWordForms := False;
{ Ищем}
if wrfReplaceAll in Flags then
WordApp.Selection.Find.Execute(Replace := wdReplaceAll)
else
WordApp.Selection.Find.Execute(Replace := wdReplaceOne);
{ Сохраняем word }
WordApp.ActiveDocument.SaveAs(ADocument);
{ Всё нормально }
Result := True;
{ Закрываем document }
WordApp.ActiveDocument.Close(wdDoNotSaveChanges);
finally
{ Закрываем Word }
WordApp.Quit;
WordApp := Unassigned;
end;
end;
// Пример использования:
procedure TForm1.Button1Click(Sender: TObject);
begin
WordStringReplace('C:\SomeStrangeDoc.doc', 'Маша ела кашу',
'Маша съела кашу :)', [wrfReplaceAll]);
end;

Далее: Запуск Word без автостартующего (AutoStart) макроса »»