Текущий архив: 2005.07.25;
Скачать: CL | DM;
Вниз
Интеграция Delphi и Excel. Мастера откликнитесь. Найти похожие ветки
← →
Roobee © (2004-10-11 17:46) [0]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.
← →
Polevi © (2004-10-11 19:35) [1]создай макрос в excel, запиши в него какие либо действия и посмотри на получившийся VBA код
думаю подобные вопросы должны отпасть
← →
YurikGL © (2004-10-11 19:59) [2]http://www.delphimaster.ru/cgi-bin/anketa.pl?id=1084962208
Читать интересное о себе.
← →
TUser © (2004-10-11 21:10) [3]
> YurikGL © (11.10.04 19:59) [2]
Извините, но это пдражание Максиму
← →
YurikGL © (2004-10-11 21:32) [4]
> TUser © (11.10.04 21:10) [3]
Ну не могу ж я в его анкету дописать :-), а набирать каждый раз надоело.
← →
Dum (2004-10-12 09:47) [5]Можешь. Используй шаблоны. (*.xlt)
← →
Dum (2004-10-12 09:52) [6]Очень дохлдчиво изложено у Виктора Корнякова!
Удачи...
Суперфункции (№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 год)
Ответы на вопросы
← →
Roobee © (2004-10-12 17:51) [7]Спасибо за советы.
То что предложено - читал. Макросы писАл (именно их и перевожу в анолог на 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 не обнаружил
:(
Может кто черканет строчку кода (рабочую) плз.
← →
YurikGL © (2004-10-12 20:01) [8]
> Roobee © (12.10.04 17:51) [7]
Работай через CreateOleObject
Страницы: 1 вся ветка
Текущий архив: 2005.07.25;
Скачать: CL | DM;
Память: 0.5 MB
Время: 0.057 c