Шаг 197.
Автоматизация Microsoft Excel. Печать.
Задание области печати

    На этом шаге мы рассмотрим способ изменения области печати.

    Лист рабочей книги может содержать огромное количество информации и достаточно велик. К тому же не всегда нужно печатать всю информацию листа. Достаточно (а часто - требуется) выводить на печать только определенную область ячеек. Значит, нужна возможность задавать эту область. Для этого предназначено свойство PrintArea объекта PageSetup, содержащее строку адреса прямоугольной области. Изменяя значение PrintArea, мы изменяем область печати.

    В следующей процедуре задается область печати первой страницы рабочей книги.

procedure TForm1.Button6Click(Sender: TObject);
//Переопределение области печати
begin
  //Получение ссылки на 1-й лист рабочей книги
  ST:=E.Sheets.Item[1];
  //Переопределение области печати
  ST.PageSetup.PrintArea:=Edit1.Text;
end;

    На рисунке 1 приведен пример использования этой процедуры для задания области печати A1:B10 первой страницы (на рисунке страница находится в режиме разметки).


Рис.1. Задание области печати

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

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComObj, Spin, ExtDlgs, ExtCtrls, ComCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Label1: TLabel;
    ComboBox1: TComboBox;
    OpenDialog1: TOpenDialog;
    Button4: TButton;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    Label2: TLabel;
    ListBox1: TListBox;
    Button5: TButton;
    TabSheet2: TTabSheet;
    Label3: TLabel;
    Edit1: TEdit;
    Button6: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure ComboBox1Change(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
var
  E:variant;
  ST: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);
//Открытие рабочей книги
begin
 if OpenDialog1.Execute then
    E.WorkBooks.Open(OpenDialog1.FileName);
end;

procedure TForm1.ComboBox1Change(Sender: TObject);
//Переключение вида документа
begin
  case ComboBox1.ItemIndex of
   0:E.ActiveWindow.View:=1; //xlNormalView;
   1:E.ActiveWindow.View:=2; //xlPageBreakPreview;
  end;
end;

procedure TForm1.Button4Click(Sender: TObject);
//Добавление разрывов страницы
var
   i:integer;
begin
  //Получение ссылки на 1-й лист рабочей книги
  ST:=E.Sheets.Item[1];
//Добавление разрывов страницы
  ST.VPageBreaks.Add (Before:=E.ActiveSheet.Cells[10,2]);
  ST.HPageBreaks.Add (Before:=E.ActiveSheet.Cells[10,2]);
  ListBox1.Items.Clear;
  ListBox1.Items.Add('Горизонтальные разрывы');
  for i:=1  to ST.HPageBreaks.Count do
    ListBox1.Items.Add(IntToStr(i));
  ListBox1.Items.Add('Вертикальные разрывы');
  for i:=1  to ST.VPageBreaks.Count do
    ListBox1.Items.Add(IntToStr(i));
  ListBox1.ItemIndex:=0;
end;

procedure TForm1.Button5Click(Sender: TObject);
//Перенос линий разрывов страниц
begin
  ST.HPageBreaks.Item[1].Location:=ST.Range['A5:A5'];
  ST.VPageBreaks.Item[1].Location:=ST.Range['C4:C4'];
end;

procedure TForm1.Button6Click(Sender: TObject);
//Переопределение области печати
begin
  //Получение ссылки на 1-й лист рабочей книги
  ST:=E.Sheets.Item[1];
  //Переопределение области печати
  ST.PageSetup.PrintArea:=Edit1.Text;
end;

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

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




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