![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Заменить строки в файле 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 |