На этом шаге мы рассмотрим организацию замены текста.
После успешного поиска текста метод Find возвращает ссылку на объект-ячейку, используя который мы можем изменить содержание ячейки. Повторяя поиск и замену многократно, можно сформировать необходимый документ, но для этого есть более эффективный способ - использование функции поиска и замены. Эта функция в Excel реализуется методом Replace, который имеет два обязательных аргумента - искомый текст и текст для замены. В качестве примера использования этого метода рассмотрим следующую процедуру.
procedure TForm1.Button4Click(Sender: TObject); //Поиск и замена текста var S,U:string; FindRange:variant; begin S:=InputBox ('Поиск текста!','',''); U:=InputBox ('Замена на текст!','',''); if S<>'' then begin try FindRange:=E.Cells.Replace(What:=S,Replacement:=U); except MessageBox(0,'Искомый текст не найден!','Внимание!',0); end; end; end;
В результате выполнения этой процедуры будет заменен текст, если условия поиска выполнены. Иначе будет сгенерирована исключительная ситуация, обработав которую мы выведем сообщение об ошибке и невозможности замены текста.
Результат работы процедуры изображен на рисунках 1 и 2.

Рис.1. Книга до замены

Рис.2. Книга после замены
Полная спецификация метода Replace:
  Replace(What, Replacement, LookAt, SearchOrder, 
     MatchCase, MatchByte);
Аргументы метода Replace приведены в таблице 1.
| Аргумент | Тип | Значение | 
|---|---|---|
| What | String | Строка поиска | 
| Replacement | String | Строка замены | 
| LookAt | Integer | Поиск совпадения строки текста целиком или ее части. Возможные значения:
  | 
| SearchOrder | Integer | Порядок поиска (перебираем строки или столбцы). Возможные значения:
  | 
| MatchCase | Boolean | Учет регистра букв при поиске (True - учитывать регистр, по умолчанию - False) | 
| MatchByte | Boolean | Предназначен для двухбайтовых символов (в версиях для Windows не используется) | 
Приведем полный текст приложения.
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComObj; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation var E:variant; {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); //Создание объекта Excel и отображение окна begin E:=CreateOleObject('Excel.Application'); E.Visible:=True; end; procedure TForm1.Button2Click(Sender: TObject); //Создание рабочей книги begin E.WorkBooks.Add; end; procedure TForm1.Button3Click(Sender: TObject); //Заполним 1-ю строку и 3-й столбец begin E.ActiveSheet.Rows[1].Value:='123'; E.ActiveSheet.Columns[3].Value:='123'; end; procedure TForm1.Button4Click(Sender: TObject); //Поиск и замена текста var S,U:string; FindRange:variant; begin S:=InputBox ('Поиск текста!','',''); U:=InputBox ('Замена на текст!','',''); if S<>'' then begin try FindRange:=E.Cells.Replace(What:=S,Replacement:=U); except MessageBox(0,'Искомый текст не найден!','Внимание!',0); end; end; end; end.
На следующем шаге мы рассмотрим определение и изменение размеров ячейки.