Основы COM-технологий. Артемов М.А. и др. - 36 стр.

UptoLike

Составители: 

ɫɜɨɣɫɬɜɚ ɪɟɚɥɶɧɵɦ ɰɜɟɬɚɦ ɦɨɠɧɨ ɧɚɣɬɢ ɜ ɫɩɪɚɜɨɱɧɨɦ ɮɚɣɥɟ
VBAXL9.CHM.
Ɉɛɪɚɬɢɬɶɫɹ ɤ ɬɟɤɭɳɟɣ ɹɱɟɣɤɟ ɦɨɠɧɨ ɫ ɩɨɦɨɳɶɸ ɫɜɨɣɫɬɜɚ ActiveCell
ɨɛɴɟɤɬɚ Excel.Application, ɚ ɭɡɧɚɬɶ ɦɟɫɬɨɩɨɥɨɠɟɧɢɟ ɹɱɟɣɤɢ ɦɨɠɧɨ ɫ ɩɨ-
ɦɨɳɶɸ ɫɜɨɣɫɬɜɚ Address ɨɛɴɟɤɬɚ Cell, ɧɚɩɪɢɦɟɪ:
ShowMessage(App.ActiveCell.Address);
ɉɨɦɢɦɨ ɨɛɪɚɳɟɧɢɹ ɤ ɨɬɞɟɥɶɧɵɦ ɹɱɟɣɤɚɦ, ɦɨɠɧɨ ɦɚɧɢɩɭɥɢɪɨɜɚɬɶ
ɩɪɹɦɨɭɝɨɥɶɧɵɦɢ ɨɛɥɚɫɬɹɦɢ ɹɱɟɟɤ ɫ ɩɨɦɨɳɶɸ ɨɛɴɟɤɬɚ Range, ɧɚɩɪɢɦɟɪ:
App.WorkBooks[1].WorkSheets[2].Range[‘A1:C5’].Value := ‘Test’;
App.WorkBooks[1].WorkSheets[2].Range[‘A1:C5’].Font.Color := clRed;
ɉɪɢɜɟɞɟɧɧɵɣ ɜɵɲɟ ɤɨɞ ɩɪɢɜɨɞɢɬ ɤ ɡɚɩɨɥɧɟɧɢɸ ɩɪɹɦɨɭɝɨɥɶɧɨɝɨ ɭɱɚ-
ɫɬɤɚ ɬɟɤɫɬɨɦ ɢ ɤ ɢɡɦɟɧɟɧɢɸ ɰɜɟɬɚ ɲɪɢɮɬɚ ɹɱɟɟɤ.
Ɉɛɴɟɤɬ Range ɬɚɤɠɟ ɱɚɫɬɨ ɢɫɩɨɥɶɡɭɟɬɫɹ ɞɥɹ ɤɨɩɢɪɨɜɚɧɢɹ ɩɪɹɦɨ-
ɭɝɨɥɶɧɵɯ ɨɛɥɚɫɬɟɣ ɱɟɪɟɡ ɛɭɮɟɪ ɨɛɦɟɧɚ. ɇɢɠɟ ɩɪɢɜɟɞɟɧ ɩɪɢɦɟɪ, ɢɥɥɸɫɬ-
ɪɢɪɭɸɳɢɣ ɤɨɩɢɪɨɜɚɧɢɟ ɬɚɤɨɣ ɨɛɥɚɫɬɢ:
App.WorkBooks[1].WorkSheets[2].Range[‘A1:C5’].Copy;
App.WorkBooks[1].WorkSheets[2].Range[‘A11:C15’].Select;
App.WorkBooks[1].WorkSheets[2].Paste;
Ɉɛɪɚɬɢɬɟ ɜɧɢɦɚɧɢɟ ɧɚ ɬɨ, ɱɬɨ ɞɢɚɩɚɡɨɧ, ɤɭɞɚ ɤɨɩɢɪɭɸɬɫɹ ɞɚɧɧɵɟ,
ɩɪɟɞɜɚɪɢɬɟɥɶɧɨ ɜɵɞɟɥɹɟɬɫɹ ɫ ɩɨɦɨɳɶɸ ɦɟɬɨɞɚ Select.
Ɉɬɦɟɬɢɦ, ɱɬɨ ɩɪɢɦɟɪɧɨ ɬɚɤɢɦ ɠɟ ɨɛɪɚɡɨɦ ɦɨɠɧɨ ɤɨɩɢɪɨɜɚɬɶ ɞɚɧɧɵɟ
ɢ ɢɡ ɞɪɭɝɢɯ ɩɪɢɥɨɠɟɧɢɣ (ɧɚɩɪɢɦɟɪ, ɢɡ Microsoft Word).
Ⱦɨɜɨɥɶɧɨ ɱɚɫɬɨ ɩɪɢ ɚɜɬɨɦɚɬɢɡɚɰɢɢ Excel ɢɫɩɨɥɶɡɭɸɬɫɹ ɟɝɨ ɜɨɡɦɨɠ-
ɧɨɫɬɢ, ɫɜɹɡɚɧɧɵɟ ɫ ɩɨɫɬɪɨɟɧɢɟɦ ɞɢɚɝɪɚɦɦ. ɇɢɠɟ ɦɵ ɪɚɫɫɦɨɬɪɢɦ, ɤɚɤ ɷɬɨ
ɫɞɟɥɚɬɶ.
6.5.5. ɋɨɡɞɚɧɢɟ ɞɢɚɝɪɚɦɦ
Ⱦɢɚɝɪɚɦɦɚɦ Excel ɫɨɨɬɜɟɬɫɬɜɭɟɬ ɨɛɴɟɤɬ Chart, ɤɨɬɨɪɵɣ ɦɨɠɟɬ ɪɚɫ-
ɩɨɥɚɝɚɬɶɫɹ ɤɚɤ ɧɚ ɨɬɞɟɥɶɧɨɦ ɥɢɫɬɟ, ɬɚɤ ɢ ɧɚ ɥɢɫɬɟ ɫ ɞɚɧɧɵɦɢ. ȿɫɥɢ ɨɛɴ-
ɟɤɬ Chart ɪɚɫɩɨɥɚɝɚɟɬɫɹ ɧɚ ɥɢɫɬɟ ɫ ɞɚɧɧɵɦɢ, ɟɦɭ ɫɨɨɬɜɟɬɫɬɜɭɟɬ ɱɥɟɧ ɤɨɥ-
ɥɟɤɰɢɢ ChartObjects ɨɛɴɟɤɬɚ WorkSheet ɢ ɫɨɡɞɚɧɢɟ ɞɢɚɝɪɚɦɦɵ ɧɭɠɧɨ ɧɚ-
ɱɚɬɶ ɫ ɞɨɛɚɜɥɟɧɢɹ ɷɥɟɦɟɧɬɚ ɜ ɷɬɭ ɤɨɥɥɟɤɰɢɸ:
Ch:=App.WorkBooks[1].WorkSheets[2].ChartObjects.Add(10,50,400,400);
ɉɚɪɚɦɟɬɪɚɦɢ ɷɬɨɝɨ ɦɟɬɨɞɚ ɹɜɥɹɸɬɫɹ ɤɨɨɪɞɢɧɚɬɵ ɥɟɜɨɝɨ ɜɟɪɯɧɟɝɨ ɭɝ-
ɥɚ ɢ ɪɚɡɦɟɪɵ ɞɢɚɝɪɚɦɦɵ ɜ ɩɭɧɤɬɚɯ (1/72 ɞɸɣɦɚ).
ȿɫɥɢ ɠɟ ɞɢɚɝɪɚɦɦɚ ɪɚɫɩɨɥɚɝɚɟɬɫɹ ɧɚ ɨɬɞɟɥɶɧɨɦ ɥɢɫɬɟ (ɧɟ ɩɪɟɞɧɚɡɧɚ-
ɱɟɧɧɨɦ ɞɥɹ ɯɪɚɧɟɧɢɹ ɞɚɧɧɵɯ), ɬɨ ɫɨɡɞɚɧɢɟ ɞɢɚɝɪɚɦɦɵ ɧɭɠɧɨ ɧɚɱɚɬɶ ɫ
ɞɨɛɚɜɥɟɧɢɹ ɷɥɟɦɟɧɬɚ ɜ ɤɨɥɥɟɤɰɢɸ Sheets ɨɛɴɟɤɬɚ Application (ɤɨɬɨɪɚɹ ɨɬ-
71
ɥɢɱɚɟɬɫɹ ɨɬ ɤɨɥɥɟɤɰɢɢ WorkSheets ɬɟɦ, ɱɬɨ ɫɨɞɟɪɠɢɬ ɥɢɫɬɵ ɜɫɟɯ ɬɢɩɨɜ, ɚ
ɧɟ ɬɨɥɶɤɨ ɥɢɫɬɵ ɫ ɞɚɧɧɵɦɢ):
App.WorkBooks[1].Sheets.Add(,,1,xlWBATChart);
ȼ ɷɬɨɦ ɫɥɭɱɚɟ ɩɟɪɜɵɣ ɩɚɪɚɦɟɬɪ ɦɟɬɨɞɚ Add ɭɤɚɡɵɜɚɟɬ ɩɨɪɹɞɤɨɜɵɣ
ɧɨɦɟɪ ɥɢɫɬɚ, ɩɟɪɟɞ ɤɨɬɨɪɵɦ ɧɭɠɧɨ ɩɨɦɟɫɬɢɬɶ ɞɚɧɧɵɣ ɥɢɫɬ (ɢɥɢ ɞɚɧɧɵɟ
ɥɢɫɬɵ, ɟɫɥɢ ɢɯ ɧɟɫɤɨɥɶɤɨ), ɜɬɨɪɨɣ ɩɚɪɚɦɟɬɪɩɨɪɹɞɤɨɜɵɣ ɧɨɦɟɪ ɥɢɫɬɚ,
ɩɨɫɥɟ ɤɨɬɨɪɨɝɨ ɧɭɠɧɨ ɩɨɦɟɫɬɢɬɶ ɞɚɧɧɵɣ ɥɢɫɬ (ɢɫɩɨɥɶɡɭɟɬɫɹ ɨɛɵɱɧɨ ɨɞɢɧ
ɢɡ ɧɢɯ), ɬɪɟɬɢɣ ɩɚɪɚɦɟɬɪɫɤɨɥɶɤɨ ɧɭɠɧɨ ɫɨɡɞɚɬɶ ɥɢɫɬɨɜ, ɚ ɱɟɬɜɟɪɬɵɣ
ɤɚɤɨɝɨ ɬɢɩɚ ɞɨɥɠɟɧ ɛɵɬɶ ɥɢɫɬ. Ɂɧɚɱɟɧɢɹ ɱɟɬɜɟɪɬɨɝɨ ɩɚɪɚɦɟɬɪɚ ɫɨɜɩɚɞɚɸɬ
ɫɨ ɡɧɚɱɟɧɢɹɦɢ ɩɟɪɜɨɝɨ ɩɚɪɚɦɟɬɪɚ ɦɟɬɨɞɚ Add ɤɨɥɥɟɤɰɢɢ WorkBooks ɨɛɴ-
ɟɤɬɚ Application, ɢ ɩɪɢ ɢɫɩɨɥɶɡɨɜɚɧɢɢ ɢɦɟɧ ɫɨɨɬɜɟɬɫɬɜɭɸɳɢɯ ɤɨɧɫɬɚɧɬ
ɫɥɟɞɭɟɬ ɨɩɪɟɞɟɥɢɬɶ ɢɯ ɜ ɩɪɢɥɨɠɟɧɢɢ-ɤɨɧɬɪɨɥɥɟɪɟ.
ɉɪɨɫɬɟɣɲɢɣ ɫɩɨɫɨɛ ɫɨɡɞɚɬɶ ɞɢɚɝɪɚɦɦɭ, ɫ ɬɨɱɤɢ ɡɪɟɧɢɹ ɩɨɥɶɡɨɜɚɬɟɥɹ, –
ɫɨɡɞɚɬɶ ɟɟ ɫ ɩɨɦɨɳɶɸ ɫɨɨɬɜɟɬɫɬɜɭɸɳɟɝɨ ɷɤɫɩɟɪɬɚ ɧɚ ɨɫɧɨɜɟ ɩɪɹɦɨɭɝɨɥɶɧɨɣ
ɨɛɥɚɫɬɢ ɫ ɞɚɧɧɵɦɢ. Ɍɨɱɧɨ ɬɚɤ ɠɟ ɦɨɠɧɨ ɫɨɡɞɚɬɶ ɞɢɚɝɪɚɦɦɭ ɢ ɫ ɩɨɦɨɳɶɸ
ɤɨɧɬɪɨɥɥɟɪɚ ɚɜɬɨɦɚɬɢɡɚɰɢɢɞɥɹ ɷɬɨɣ ɰɟɥɢ ɭ ɨɛɴɟɤɬɚ Chart, ɹɜɥɹɸɳɟɝɨɫɹ
ɫɜɨɣɫɬɜɨɦ ɨɛɴɟɤɬɚ ChartObject (ɱɥɟɧɚ ɤɨɥɥɟɤɰɢɢ ChartObjects), ɢɦɟɟɬɫɹ ɦɟ-
ɬɨɞ ChartWizard. ɉɟɪɜɵɦ ɩɚɪɚɦɟɬɪɨɦ ɷɬɨɝɨ ɦɟɬɨɞɚ ɹɜɥɹɟɬɫɹ ɨɛɴɟɤɬ Range,
ɫɨɞɟɪɠɚɳɢɣ ɞɢɚɩɚɡɨɧ ɹɱɟɟɤ ɞɥɹ ɩɨɫɬɪɨɟɧɢɹ ɞɢɚɝɪɚɦɦɵ, ɚ ɜɬɨɪɵɦɱɢɫɥɨ-
ɜɨɣ ɩɚɪɚɦɟɬɪ, ɭɤɚɡɵɜɚɸɳɢɣ, ɤɚɤɨɝɨ ɬɢɩɚ ɞɨɥɠɧɚ ɛɵɬɶ ɷɬɚ ɞɢɚɝɪɚɦɦɚ:
Var Ch: Variant;
Ch.Chart.ChartWizard(App.WorkBooks[1].WorkSheets[2].Range[‘A1:C5’],
xl3DColumn);
ȼɨɡɦɨɠɧɵɟ ɡɧɚɱɟɧɢɹ ɩɚɪɚɦɟɬɪɚ, ɨɬɜɟɱɚɸɳɟɝɨ ɡɚ ɬɢɩ ɞɢɚɝɪɚɦɦɵ,
ɦɨɠɧɨ ɧɚɣɬɢ ɜ ɫɩɪɚɜɨɱɧɨɦ ɮɚɣɥɟ.
ɍ ɨɛɴɟɤɬɚ Chart ɢɦɟɟɬɫɹ ɦɧɨɠɟɫɬɜɨ ɫɜɨɣɫɬɜ,
ɨɬɜɟɱɚɸɳɢɯ ɡɚ ɜɧɟɲɧɢɣ
ɜɢɞ ɞɢɚɝɪɚɦɦɵ, ɫ ɩɨɦɨɳɶɸ ɤɨɬɨɪɵɯ ɦɨɠɧɨ ɢɡɦɟɧɢɬɶ ɟɟ ɬɨɱɧɨ ɬɚɤ ɠɟ, ɤɚɤ
ɩɨɥɶɡɨɜɚɬɟɥɢ ɞɟɥɚɸɬ ɷɬɨ ɜɪɭɱɧɭɸ. ɇɢɠɟ ɩɪɢɜɨɞɢɬɫɹ ɩɪɢɦɟɪ ɫɨɡɞɚɧɢɹ ɡɚ-
ɝɨɥɨɜɤɚ ɞɢɚɝɪɚɦɦɵ ɢ ɩɨɞɩɢɫɟɣ ɜɞɨɥɶ ɟɟ ɨɫɟɣ (ɨɬɦɟɬɢɦ, ɱɬɨ ɨɫɢ ɟɫɬɶ ɧɟ ɭ
ɜɫɟɯ ɬɢɩɨɜ ɞɢɚɝɪɚɦɦ).
Ch.Chart.HasTitle :=1;
Ch.Chart.HasLegend := False;
Ch.Chart.ChartTitle.Text := ‘ɉɪɢɦɟɪ ɞɢɚɝɪɚɦɦɵ Excel ‘;
Ch.Chart.Axes(1).HasTitle := True;
Ch.Chart.Axes(1).AxisTitle.Text := ‘ɉɨɞɩɢɫɶ ɜɞɨɥɶ ɨɫɢ ɚɛɫɰɢɫɫ’;
Ch.Chart.Axes(2).HasTitle := True;
Ch.Chart.Axes(2).AxisTitle.Text := ‘ɉɨɞɩɢɫɶ ɜɞɨɥɶ ɨɫɢ ɨɪɞɢɧɚɬ’;
ȿɳɟ ɨɞɢɧ ɫɩɨɫɨɛ ɫɨɡɞɚɧɢɹ ɞɢɚɝɪɚɦɦɵɨɩɪɟɞɟɥɢɬɶ ɜɫɟ ɟɟ ɩɚɪɚɦɟɬɪɵ
ɫ ɩɨɦɨɳɶɸ ɫɜɨɣɫɬɜ ɨɛɴɟɤɬɚ Chart, ɜɤɥɸɱɚɹ ɢ ɨɩɪɟɞɟɥɟɧɢɟ ɫɟɪɢɣ, ɧɚ ɨɫɧɨ-
72
�������� �������� ������ ����� ����� � ���������� �����                    �������� �� ��������� WorkSheets ���, ��� �������� ����� ���� �����, �
VBAXL9.CHM.                                                                �� ������ ����� � �������):
    ���������� � ������� ������ ����� � ������� �������� ActiveCell             App.WorkBooks[1].Sheets.Add(,,1,xlWBATChart);
������� Excel.Application, � ������ �������������� ������ ����� � ��-
����� �������� Address ������� Cell, ��������:                                  � ���� ������ ������ �������� ������ Add ��������� ����������
    ShowMessage(App.ActiveCell.Address);                                   ����� �����, ����� ������� ����� ��������� ������ ���� (��� ������
                                                                           �����, ���� �� ���������), ������ �������� – ���������� ����� �����,
    ������ ��������� � ��������� �������, ����� ��������������             ����� �������� ����� ��������� ������ ���� (������������ ������ ����
�������������� ��������� ����� � ������� ������� Range, ��������:          �� ���), ������ �������� – ������� ����� ������� ������, � ��������� –
    App.WorkBooks[1].WorkSheets[2].Range[‘A1:C5’].Value := ‘Test’;         ������ ���� ������ ���� ����. �������� ���������� ��������� ���������
    App.WorkBooks[1].WorkSheets[2].Range[‘A1:C5’].Font.Color := clRed;     �� ���������� ������� ��������� ������ Add ��������� WorkBooks ���-
                                                                           ���� Application, � ��� ������������� ���� ��������������� ��������
    ����������� ���� ��� �������� � ���������� �������������� ���-         ������� ���������� �� � ����������-�����������.
���� ������� � � ��������� ����� ������ �����.                                  ���������� ������ ������� ���������, � ����� ������ ������������, –
    ������ Range ����� ����� ������������ ��� ����������� �����-           ������� �� � ������� ���������������� �������� �� ������ �������������
�������� �������� ����� ����� ������. ���� �������� ������, ������-        ������� � �������. ����� ��� �� ����� ������� ��������� � � �������
�������� ����������� ����� �������:                                        ����������� ������������� – ��� ���� ���� � ������� Chart, �����������
    App.WorkBooks[1].WorkSheets[2].Range[‘A1:C5’].Copy;                    ��������� ������� ChartObject (����� ��������� ChartObjects), ������� ��-
    App.WorkBooks[1].WorkSheets[2].Range[‘A11:C15’].Select;                ��� ChartWizard. ������ ���������� ����� ������ �������� ������ Range,
    App.WorkBooks[1].WorkSheets[2].Paste;                                  ���������� �������� ����� ��� ���������� ���������, � ������ – �����-
                                                                           ��� ��������, �����������, ������ ���� ������ ���� ��� ���������:
     �������� �������� �� ��, ��� ��������, ���� ���������� ������,             Var Ch: Variant;
�������������� ���������� � ������� ������ Select.                              …
     �������, ��� �������� ����� �� ������� ����� ���������� ������             Ch.Chart.ChartWizard(App.WorkBooks[1].WorkSheets[2].Range[‘A1:C5’],
� �� ������ ���������� (��������, �� Microsoft Word).                      xl3DColumn);
     �������� ����� ��� ������������� Excel ������������ ��� ������-
�����, ��������� � ����������� ��������. ���� �� ����������, ��� ���           ��������� �������� ���������, ����������� �� ��� ���������,
�������.                                                                   ����� ����� � ���������� �����.
                                                                               � ������� Chart ������� ��������� �������, ���������� �� �������
                       6.5.5. �������� ��������                            ��� ���������, � ������� ������� ����� �������� �� ����� ��� ��, ���
                                                                           ������������ ������ ��� �������. ���� ���������� ������ �������� ��-
     ���������� Excel ������������� ������ Chart, ������� ����� ���-       ������� ��������� � �������� ����� �� ���� (�������, ��� ��� ���� �� �
���������� ��� �� ��������� �����, ��� � �� ����� � �������. ���� ���-     ���� ����� ��������).
��� Chart ������������� �� ����� � �������, ��� ������������� ���� ���-        Ch.Chart.HasTitle :=1;
������ ChartObjects ������� WorkSheet � �������� ��������� ����� ��-           Ch.Chart.HasLegend := False;
���� � ���������� �������� � ��� ���������:                                    Ch.Chart.ChartTitle.Text := ‘������ ��������� Excel ‘;
     Ch:=App.WorkBooks[1].WorkSheets[2].ChartObjects.Add(10,50,400,400);       Ch.Chart.Axes(1).HasTitle := True;
     ����������� ����� ������ �������� ���������� ������ �������� ��-          Ch.Chart.Axes(1).AxisTitle.Text := ‘������� ����� ��� �������’;
�� � ������� ��������� � ������� (1/72 �����).                                 Ch.Chart.Axes(2).HasTitle := True;
     ���� �� ��������� ������������� �� ��������� ����� (�� ���������-         Ch.Chart.Axes(2).AxisTitle.Text := ‘������� ����� ��� �������’;
������ ��� �������� ������), �� �������� ��������� ����� ������ �
���������� �������� � ��������� Sheets ������� Application (������� ��-        ��� ���� ������ �������� ��������� – ���������� ��� �� ���������
                                                                           � ������� ������� ������� Chart, ������� � ����������� �����, �� ����-
                                   71                                                                         72