Microsoft Excel reporting and 
 data analyzing with practically no coding. 
 .Net, ActiveX, and VCL versions. 
 www.AfalinaSoft.com

Главная    Продукты    Downloads    Поддержка    Регистрация    Delphi & Excel

[ English ]

MS Office COM Add-ins. Excel reports with minimal coding. Save your time. Get impressive results. VCL & OCX. Microsoft Excel reporting 
 and data analyzing

Delphi & Excel


Продукты



Delphi & Microsoft Excel: Workbooks (рабочая книга)

Добавление имени в рабочую книгу


Используя раннее связывание

var
IName: Excel8_TLB.Name;
...
IName := IWorkbook.Names.Add('AddedName', '=Лист1!$A$1:$D$3', EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam);

Первый параметр - новое имя, второй - область, на которую ссылается имя. Если третий параметр - False, имя будет скрытым, и не будет появляться в диалогах "Определить имя" или "Перейти к"

Используя позднее связывание

var
Name: OLEVariant;
...
Name := Workbook.Names.Add('AddedName', '=Лист1!$A$1:$D$3')

Примечание:
Обратите внимание на использование абсолютной адресации в параметре RefersTo (знак $).


Добавление макроса в рабочую книгу

Вы можете изменять код Excel VBA во время выполнения, записывая напрямую в модуль кода редактора Excel VBA, добавляя или удаляя строки и события. Важным объектом здесь является CodeModule (хитро упрятанный глубоко в недра справки по VBA). Его объявление можно найти в файле VBIDE97.pas. Пример, как его можно использовать:

uses VBIDE8_TLB;
...
var
LineNo: integer;
ICodeModule: VBIDE8_TLB.CodeModule;
...
ICodeModule := IWorkbook.VBProject.VBComponents.Item('ЭтаКнига').CodeModule;
LineNo := ICodeModule.CreateEventProc('Activate', 'Workbook');
CodeModule.InsertLines(LineNo + 1, ' Range("A1").Value = "Книга открыта!"');

А вот так можно добавить новый модуль:

var
IModule: VBIDE8_TLB.VBComponent;
...
IModule := IWorkbook.VBProject.VBComponents.Add( TOLEEnum(VBIDE8_TLB.vbext_ct_StdModule) );
IModule.Name :='MyModule1';

,поместить в него новую процедуру VBA:

IModule.CodeModule.AddFromString('PUBLIC SUB MySub1()'#13'Msgbox "Hello, World!"'#13'End sub'#13);

и запустить эту процедуру

OLEVariant(Excel).Run('MyModule1.MySub1');

Copyright © 1999-2003
Afalina Co., Ltd.
Все права защищены.

WebMaster