На этом шаге мы рассмотрим различные способы сохранения рабочей книги Excel.
После того как рабочая книга выбрана, мы можем ее редактировать, сохранить под прежним или другим именем и закрыть. Для этого используем методы Save, Save As и Close.
procedure TForm1.Button8Click(Sender: TObject); //Сохранение рабочей книги begin WB.Save; end; procedure TForm1.Button9Click(Sender: TObject); //Сохранение рабочей книги под новым именем begin if SaveDialog1.Execute then WB.SaveAs(SaveDialog1.FileName); end;
Метод SaveAs должен применяться, как минимум, с одним обязательным аргументом - именем файла, но может быть применен с несколькими аргументами, определяющими режим сохранения файла (таблица 1). Спецификация вызова метода приведена в справке по Visual Basic и имеет вид:
SaveAs(Filename, FileFormat, Password, WriteResPassword, ReadOnlyRecommended, CreateBackup, AddToMRU, TextCodePage, TextVisualLayout);
Имя | Тип | Назначение |
---|---|---|
FileName | String | Имя файла |
FileFormat | Integer | Формат сохраняемого файла |
Password | String | Пароль, который будет использоваться для открытия сохраненной рабочей книги |
WriteResPassword | String | Пароль, который будет использоваться для записи изменений в открытую для редактирования рабочую книгу |
ReadOnlyRecommended | Boolean | True - при открытии книги отображается сообщение о том, что файл может быть открыт только в режиме "для чтения" |
CreateBackup | Boolean | True - создать резервный файл |
AccessMode | Integer | Режим доступа к файлу |
ConflictResolution | Integer | Реакция приложения на конфликт при записи книги |
AddToMRU | Boolean | True - добавить имя записываемого файла в список недавно открытых файлов меню Файл |
TextCodePage | Не используется | |
TextVisualLayout | Не используется |
После того как рабочая книга сохранена, можно закрыть ее, для этого используем метод Close объекта WorkBook. Для того чтобы закрыть сразу все открытые книги, используем метод Close коллекции WorkBooks. Перед тем как закрыть рабочую книгу, нелишне проверить - сохранена она или нет. Для этого используем свойство Saved объекта WorkBook. Значение Saved=True означает, что со времени последнего сохранения рабочая книга не была изменена, т. е. сохранять ее не нужно. В следующем примере мы проверяем, есть или нет изменения в книге, а затем закрываем ее.
procedure TForm1.Button10Click(Sender: TObject); //Проверка сохранения рабочей книги begin if WB.Saved then MessageBox(handle,'Документ сохранен!','Внимание!',0) else MessageBox(handle,'Документ не сохранен!','Внимание!',0); end; procedure TForm1.Button11Click(Sender: TObject); //Закрытие рабочей книги begin WB.Close; end;
Результат выполнения первой процедуры представлен на рисунке 1.
Рис.1. Результат работы приложения
Вот полный текст приложения.
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComObj; type TForm1 = class(TForm) Button1: TButton; CheckBox1: TCheckBox; Button2: TButton; Button3: TButton; Button4: TButton; OpenDialog1: TOpenDialog; Button5: TButton; Button6: TButton; Button7: TButton; ListBox1: TListBox; Label1: TLabel; Button8: TButton; Button9: TButton; Button10: TButton; Button11: TButton; SaveDialog1: TSaveDialog; procedure Button1Click(Sender: TObject); procedure CheckBox1Click(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 ListBox1Click(Sender: TObject); procedure Button8Click(Sender: TObject); procedure Button9Click(Sender: TObject); procedure Button10Click(Sender: TObject); procedure Button11Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} var E:variant; WBS:variant; WB:variant; procedure TForm1.Button1Click(Sender: TObject); //Создание объекта Excel.Application begin E:=CreateOleObject('Excel.Application'); end; procedure TForm1.CheckBox1Click(Sender: TObject); //Отображение окна приложения Excel begin E.Visible:=CheckBox1.Checked; end; procedure TForm1.Button2Click(Sender: TObject); //Создание рабочей книги по умолчанию begin E.WorkBooks.Add; end; procedure TForm1.Button3Click(Sender: TObject); //Создание рабочей книги на основе шаблона 1 const xlWBATChart=-4109; begin E.WorkBooks.add(xlWBATChart); end; procedure TForm1.Button4Click(Sender: TObject); //Создание рабочей книги на основе шаблона 2 begin if OpenDialog1.Execute then E.WorkBooks.add(OpenDialog1.FileName); end; procedure TForm1.Button5Click(Sender: TObject); //Открытие существующей рабочей книги begin if OpenDialog1.Execute then E.WorkBooks.Open(OpenDialog1.FileName); end; procedure TForm1.Button6Click(Sender: TObject); //Открытие существующей рабочей книги в режиме "только для чтения" begin if OpenDialog1.Execute then E.WorkBooks.Open(FileName:=OpenDialog1.FileName, ReadOnly:=True); end; procedure TForm1.Button7Click(Sender: TObject); //Получение списка рабочих книг var i:integer; begin WBS:=E.WorkBooks; for i:=1 to WBS.Count do ListBox1.Items.Add(WBS.Item[i].Name+ '; '+WBS.Item[i].FullName); end; procedure TForm1.ListBox1Click(Sender: TObject); //Получение ссылки на выбранную рабочую книгу begin WBS.Item[ListBox1.ItemIndex+1].Activate; WB:=WBS.Item[ListBox1.ItemIndex+1]; end; procedure TForm1.Button8Click(Sender: TObject); //Сохранение рабочей книги begin WB.Save; end; procedure TForm1.Button9Click(Sender: TObject); //Сохранение рабочей книги под новым именем begin if SaveDialog1.Execute then WB.SaveAs(SaveDialog1.FileName); end; procedure TForm1.Button10Click(Sender: TObject); //Проверка сохранения рабочей книги begin if WB.Saved then MessageBox(handle,'Документ сохранен!','Внимание!',0) else MessageBox(handle,'Документ не сохранен!','Внимание!',0); end; procedure TForm1.Button11Click(Sender: TObject); //Закрытие рабочей книги begin WB.Close; end; end.
Мы научились открывать рабочую книгу, сохранять ее и закрывать. Но перед тем, как сохранять, бывает нужно внести некоторые изменения. Это мы и рассмотрим далее.
На следующем шаге мы рассмотрим настройку окон рабочей книги.