Шаг 131.
Автоматизация Microsoft Excel. Работа с ячейками.
Запись и чтение комментариев

    На этом шаге мы рассмотрим работу с комментариями.

    Еще одним важным свойством, которым обладает ячейка листа рабочей книги Excel, является комментарий. Смысл использования комментария очевиден. Его можно записать индивидуально для каждой ячейки, он не отображается в печатной форме и служит только для описания содержимого ячеек. В одну ячейку можно записать один комментарий. Программно комментарий представляет собой объект Comment, принадлежащий ячейке. Для того чтобы изменить комментарий, необходимо очистить ячейку от старого комментария, а затем записать новый. Прочитать комментарий, записанный в данную ячейку, позволяет свойство Text объекта Comment.

    Запишем, а затем прочтем комментарий для любой ячейки листа рабочей книги. Для этого используем следующие процедуры.

procedure TForm1.Button7Click(Sender: TObject);
//Запись комментария
begin
  Range:=WB.ActiveSheet.Range[Edit1.Text];
  Range.AddComment(Edit2.Text);
end;

procedure TForm1.Button8Click(Sender: TObject);
//Чтение комментария
begin
  Range:=WB.ActiveSheet.Range[Edit1.Text];
  Edit2.Text:=Range.Comment.Text;
end;

    Результат выполнения представленных процедур показан на рисунке 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;
    Edit1: TEdit;
    Label1: TLabel;
    Button3: TButton;
    Label2: TLabel;
    Edit2: TEdit;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    Button8: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
var
  E:variant;
  WB:variant; //Ссылка на рабочую книгу
  Range: 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
  Range:=WB.ActiveSheet.Range[Edit1.Text];
  Range.Formula:=Edit2.Text;
end;

procedure TForm1.Button4Click(Sender: TObject);
//Вызов мастера функций
begin
  Range:=WB.ActiveSheet.Range[Edit1.Text];
  Range.FunctionWizard;
end;

procedure TForm1.Button5Click(Sender: TObject);
//Проверка на наличие формулы в ячейке
begin
  Range:=WB.ActiveSheet.Range[Edit1.Text];
  if Range.HasFormula then
    MessageBox(0,'Данная ячейка содержит формулу!','Внимание!',0)
  else
    MessageBox(0,'Данная ячейка не содержит формулу!', 'Внимание!',0)
end;

procedure TForm1.Button6Click(Sender: TObject);
//Чтение формулы
begin
  Range:=WB.ActiveSheet.Range[Edit1.Text];
  Edit2.Text:=Range.Formula;
end;

procedure TForm1.Button7Click(Sender: TObject);
//Запись комментария
begin
  Range:=WB.ActiveSheet.Range[Edit1.Text];
  Range.AddComment(Edit2.Text);
end;

procedure TForm1.Button8Click(Sender: TObject);
//Чтение комментария
begin
  Range:=WB.ActiveSheet.Range[Edit1.Text];
  Edit2.Text:=Range.Comment.Text;
end;

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

    Мы рассмотрели некоторые действия с одной выбранной ячейкой с применением объектов Range и Cells. Результаты при использовании любого из этих объектов полностью идентичны. Но если требуется воздействие на область, нам придется использовать объект Range. Аргументом данного объекта может быть адрес одной ячейки или прямоугольной области из нескольких ячеек.

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




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