На этом шаге мы рассмотрим работу с комментариями.
Еще одним важным свойством, которым обладает ячейка листа рабочей книги 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.
Мы рассмотрели некоторые действия с одной выбранной ячейкой с применением объектов Range и Cells. Результаты при использовании любого из этих объектов полностью идентичны. Но если требуется воздействие на область, нам придется использовать объект Range. Аргументом данного объекта может быть адрес одной ячейки или прямоугольной области из нескольких ячеек.
Со следующего шага мы начнем знакомиться с использованием диапазна ячеек.