Поиск и замена текста (окончание)

   
На этом шаге мы рассмотрим организацию замены текста.

   
После успешного поиска текста метод 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.

Таблица 1. Аргументы метода Replace объекта Range

АргументТипЗначение
WhatStringСтрока поиска
ReplacementStringСтрока замены
LookAtIntegerПоиск совпадения строки текста целиком или ее части. Возможные значения:

  • xlWhole (1) - совпадение целиком;
  • xlPart (2) - совпадение в части.
SearchOrderIntegerПорядок поиска (перебираем строки или столбцы). Возможные значения:

  • xlByRows (1) - поиск в строках;
  • xlByColumns (2) - поиск в столбцах.
MatchCaseBooleanУчет регистра букв при поиске (True - учитывать регистр, по умолчанию - False)
MatchByteBooleanПредназначен для двухбайтовых символов (в версиях для 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.

Текст этого приложения можно взять здесь (6,2 Кб).

   
На следующем шаге мы рассмотрим определение и изменение размеров ячейки.



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий