Шаг 138.
Автоматизация Microsoft Excel. Работа с ячейками.
Поиск и замена текста (продолжение)

    На этом шаге мы рассмотрим организацию поиска текста в заданном диапазоне ячеек.

    На прошлом шаге мы рассмотрели случай поиска на всем листе рабочей книги Excel. Чтобы произвести поиск текста в ограниченной области ячеек, необходимо вызвать метод Find объекта Range, где Range - область (интервал ячеек). Например:

    FindRange:=Range('Al:Н500').Find('222');

    В этом случае поиск будет выполнен только в области ячеек, ограниченной интервалом А1:Н500.

    Полная спецификация вызова метода Find:

    Find(What, After, Lookln, LookAt, SearchOrder, 
               SearchDirection, MatchCase, MatchByte);

    Аргументы метода Find приведены в таблице 1.

Таблица 1. Аргументы метода Find объекта Range
Аргумент Тип Значение
What String Строка поиска
After Range Ячейка или область, после которой производится поиск; позволяет задать адрес начала поиска
LookIn Integer Где ищем (в значениях ячейки, в формулах или в примечаниях). Возможные значения:
  • xlComments (-4144) - в примечаниях;
  • xlFormulas (-4123) - в формулах;
  • xlValues (-4163) - в значениях ячейки.
LookAt Integer Поиск совпадения строки текста целиком или ее части. Возможные значения:
  • xlWhole (1) - совпадение целиком;
  • xlPart (2) - совпадение в части.
SearchOrder Integer Порядок поиска (перебираем строки или столбцы). Возможные значения:
  • xlByRows (1) - поиск в строках;
  • xlByColumns (2) - поиск в столбцах.
SearchDirection Integer Направление поиска (к началу, к концу). Возможные значения:
  • xlNext (1), значение по умолчанию - поиск к концу;
  • xlPrevious (2) - поиск к началу.
MatchCase Boolean Учет регистра букв при поиске (True - учитывать регистр, по умолчанию - False)
MatchByte Boolean Предназначен для двухбайтовых символов (в версиях для Windows не используется)

    Поиск в заданной области представлен на рисунке 1.


Рис.1. Результат работы приложения

    Приведем полный текст приложения.

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;
    Label1: TLabel;
    Edit1: TEdit;
    Label2: TLabel;
    Edit2: TEdit;
    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;
  WB: 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;
  WB:=E.WorkBooks.Item[1]; // Ссылка на рабочую книгу
end;


procedure TForm1.Button3Click(Sender: TObject);
//Заполнение области
begin
  WB.ActiveSheet.Range[Edit1.Text].Value:='123';
end;

procedure TForm1.Button4Click(Sender: TObject);
//Поиск текста
var
    S:String;
    FindRange:variant;
begin
    if Edit2.Text<>'' then
    begin
      try
       FindRange:=WB.ActiveSheet.Range[Edit1.Text].Find(What:=Edit2.Text);
       S:=FindRange.Text;
      except
       MessageBox(0,'Искомый текст не найден!','Внимание!',0);
      end;
    end;
end;

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

    На следующем шаге мы рассмотрим организацию замены текста.




Предыдущий шаг Содержание Следующий шаг