![]() |
![]() ![]() ![]() ![]() |
|
Заменить строки в файле WordDelphi , Технологии , OLE Automation MSOffice
Автор: [NIKEL]
{ **** UBPFD *********** by delphibase.endimus.com ****
>>
Функция заменяет файлы в документе word с опциями поиска и замены
Зависимости: ComObj
Автор: [NIKEL], nikel@pisem.net, 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;
Программа на Delphi, которая использует объект COM Microsoft Word для поиска и замены текста в документе Word. Вот разбивка того, что код делает:
Пример использования показывает, как вызывать эту функцию из обработчика события клика кнопки на форме: Код заменит все встреченные строки "Маша ела кашу" на "Маша съела кашу :)" в файле В статье описана функция для замены строк в файле Microsoft Word, разработанная на языке Delphi и использующая библиотеку ComObj. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш :: Главная :: OLE Automation MSOffice ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 | ||||