![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Интеграция Delphi и Excel. Мастера откликнитесь. [D5, WinXP]
Roobee © (2004-10-11 17:46:00)unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls,
Forms, Dialogs, Excel97, OleServer, ActiveX, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
procedure ReleaseExcel;
function AddWorkbook: Excel97.ExcelWorkbook;
public
{ Public declarations }
XLA: Excel97.TExcelApplication;
end;
var
Form1: TForm1;
IWorkbook: Excel97.ExcelWorkbook;
ISheet: Excel97.ExcelWorksheet;
IRange: Excel97.Range;
Names : TStrings;
implementation
{$R *.DFM}
function TForm1.AddWorkbook: Excel97.ExcelWorkbook;
begin
Result := nil;
if Assigned(XLA) then begin
Result := XLA.ActiveWorkbook;
end;
end;
procedure TForm1.ReleaseExcel;
begin
if Assigned(XLA) then begin
if (XLA.Workbooks.Count > 0) and (not XLA.Visible[0]) then begin
XLA.WindowState[0] := TOLEEnum(xlMinimized);
XLA.Visible[0] := true;
if not(csDestroying in ComponentState) then Self.SetFocus;
Application.BringToFront;
end;
end;
FreeAndNil(XLA);
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
ReleaseExcel;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if not Assigned(XLA) then begin
XLA := Excel97.TExcelApplication.Create(Application);
XLA.ConnectKind:=ckRunningInstance;
XLA.Connect;
XLA.Visible[0] := true;
if XLA.WindowState[0] = TOLEEnum(Excel97.xlMinimized) then
XLA.WindowState[0] := TOLEEnum(Excel97.xlNormal);
XLA.ScreenUpdating[0] := true;
IWorkbook := AddWorkbook;
try
XLA.ScreenUpdating[0] := False;
//ISheet := IWorkbook.Worksheets.Item['Data'] as Excel97.ExcelWorksheet;
//IRange:=ISheet.Range['A2',EmptyParam]; IRange.Value:='25';
//Names := TStringList.Create;
{
>> ВОПРОС:
>> Например в Excel на листе 'Data' выделены ячейки С2, С6 и С8
>> Как здесь получить текущее выделение в Excel?
>> т.е. Row, Column и Value выбранных ячеек.
}
//FreeAndNil(Names);
XLA.ScreenUpdating[0] := True;
except
ShowMessage('Исключение во время доступа к MS Excel');
//FreeAndNil(Names);
XLA.ScreenUpdating[0] := True;
end;
end;
end;
end.
YurikGL (2004-10-12 20:01:00) [1]
> Roobee © (12.10.04 17:51) [7]
Работай через CreateOleObject
Roobee (2004-10-12 17:51:00) [2]Спасибо за советы.
То что предложено - читал. Макросы писАл (именно их и перевожу в анолог на Delphi - вызовы из dll)
конткретизирую вопрос:
VBA макрос ->
Function CheckSelection() As Boolean
Dim counts, n, Gr, Gr1, Skl, Col0 As Integer
Dim Skl1, Title As String
CheckSelection = True
Gr = 0: Skl = 0: Skl1 = ""
On Error GoTo err_er
Title = Selection.Areas.Item(1)
Cells.Find(What:=Title, _
After:=ActiveCell, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:= _
xlByColumns, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:= _
False).Activate '
Col0 = ActiveCell.Column
If Col0 <> Range("data_names").Column Then
CheckSelection = False
Exit Function
End If
If Selection.Areas.Count < 1 Then
CheckSelection = False
Exit Function
End If
-->
Конструкция в Delphi -> XLA.Selection не дает результата,
а более ни в Workbook ни в Sheet(s) я Selection не обнаружил
:(
Может кто черканет строчку кода (рабочую) плз.
Dum (2004-10-12 09:52:00) [3]Очень дохлдчиво изложено у Виктора Корнякова!
Удачи...
Суперфункции (№20, 2003 год)
Возможность формирования ваше программой документов непосредственно в формате Word или Excel выгодно отличало бы ее от аналогов...
Суперфункции (№21, 2003 год)
Используя материалы первой и второй частей этой статьи, мы уже имеем возможность предоставить пользователю программу формирования документа в Word в законченном виде
Суперфункции (№22, 2003 год)
Тема третьей части статьи - создание таблиц в редакторе Word из приложений, написанных на Delphi
Суперфункции (№23, 2003 год)
Многие информационно-правовые системы содержат шаблоны документов в формате Word. Используя их и информацию статьи, вы можете легко и быстро создавать отчеты, если пишете программы на Delphi
Суперфункции (№24, 2003 год)
Используя доступ к Word.Application из приложений Delphi, можно вставлять в текст документа записи, рисунки и другие объекты...
Суперфункции (№25, 2003 год)
Начинаем создавать отчеты в Excel из приложений, разрабатываемых в Delphi...
Суперфункции (№26, 2003 год)
Рассмотрим формирование формата данных ячейки листа книги Excel
Суперфункции (№27, 2003 год)
Продолжим программирование свойств ячеек таблиц Excel...
Суперфункции (№28, 2003 год)
Эта часть посвящена функциям настройки общих параметров листа Excel, выбора и настройки принтера, подготовки листа и функциям печати
Суперфункции (№29, 2003 год)
В Excel есть возможность программировать отображение информации в виде диаграмм и графиков, и вы можете воспользоваться этим, чтобы сделать свою программу более информативной
Суперфункции (№31, 2003 год)
Продолжим программирование диаграмм в Excel...
Суперфункции (№34, 2003 год)
Создание DLL-библиотеки для работы с Word/Excel из приложений на Delphi
Суперфункции (№35, 2003 год)
Создание средствами Delphi DLL библиотек для использования в макросах Excel
Суперфункции (№37, 2003 год)
Ответы на вопросы
Dum (2004-10-12 09:47:00) [4]Можешь. Используй шаблоны. (*.xlt)
YurikGL (2004-10-11 21:32:00) [5]
> TUser © (11.10.04 21:10) [3]
Ну не могу ж я в его анкету дописать :-), а набирать каждый раз надоело.
TUser (2004-10-11 21:10:00) [6]
> YurikGL © (11.10.04 19:59) [2]
Извините, но это пдражание Максиму
YurikGL (2004-10-11 19:59:00) [7]http://www.delphimaster.ru/cgi-bin/anketa.pl?id=1084962208
Читать интересное о себе.
Polevi (2004-10-11 19:35:00) [8]создай макрос в excel, запиши в него какие либо действия и посмотри на получившийся VBA код
думаю подобные вопросы должны отпасть