안녕하세요~~
엑셀을 열려구 합니다..
다음과 같은 방법으로..
use절에 ComObj, OleServer 포함시켰구요~~
procedure excel;
var
lh_handle : THandle;
ExcelAppl : variant;
begin
//EXCEL의 CLASSNAME : XLMAIN
//현재 EXCEL이 실행되어있는지 check
lh_handle := FindWindow( 'XLMAIN', nil );
if lh_handle <> 0 then
ExcelAppl := GetActiveOLEObject('Excel.Application')
else
begin
try
ExcelAppl := CreateOLEObject ( 'Excel.Application') ;
except
Application.MessageBox ( '엑셀을 열 수 없습니다' + chr(13) +
'엑셀이 설치되어있는지 확인하십시요' , '알림' , MB_OK ) ;
end;
end;
//Workbook Add
ExcelAppl.Workbooks.add;
//Excel을 보이게함
ExcelAppl.Visible := True ;
SetForegroundWindow( lh_handle );
end;
근데요~~
저는 procedure excel을 quickreport에다 두고 하려고합니다..
quickreport를 열때는
QuickReport1 := TQuickReport1.Create(self);
QuickReport1.Prepare;
QuickReport1.PreviewModal;
QuickReport1.Free;
식으로 엽니다..
근데~~
그냥
QuickReport1.Preview;
로 할때는 자~알 되는거 같은데..
QuickReport1.PreviewModal;
로 하면 '~EOleSysError with message 'CoInitialize를 호출하지 않았습니다.'~'한 메세지가 나옵니다..
PreviewModal로는 불가능한 작업인지요~~?
참고로 procedure excel을 부르는 곳은
procedure TQuickReport1.QuickRepBeforePrint(Sender: TCustomQuickRep; var PrintReport: Boolean);
or
procedure TQuickReport1.QuickRepStartPage(Sender: TCustomQuickRep);
입니다..
근데.. 한가지 더 궁금한것은 이 두 procedure가 QuickReport1.Prepare; 할때도 QuickReport1.PreviewModal; 할때도 실행된다는 것입니다..
음.. 너무 궁금합니다..
고수님들의 빠른 조언 부탁드립니다..
그럼 즐거운 시간들 되세요~~