안녕하세요~~
엑셀을 열려구 합니다..
다음과 같은 방법으로..
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;
근데요~~
이것이 하나의 폼에서 버튼하나 두고 실행시키면 아주 자~알되요~~
근데.. excel이란 procedure를 다른 폼에 두고 uses해서 하면 handle값이 항상 0으로 떨어져 엑셀이 계속 create되거든요~~
음..
제말 말을 넘 복잡하게 했나요~~?
A form의 버튼을 눌렸을 경우 B form에 있는 excel을 부르면 findwindow해서 가져온 핸들값이 항상 0이라는 것이지요~~
잉~~
고수님들의 멋진 말씀 부탁드립니다..
> 안녕하세요~~
>
> 엑셀을 열려구 합니다..
> 다음과 같은 방법으로..
>
> 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;
>
> 근데요~~
> 이것이 하나의 폼에서 버튼하나 두고 실행시키면 아주 자~알되요~~
> 근데.. excel이란 procedure를 다른 폼에 두고 uses해서 하면 handle값이 항상 0으로 떨어져 엑셀이 계속 create되거든요~~
> 음..
> 제말 말을 넘 복잡하게 했나요~~?
> A form의 버튼을 눌렸을 경우 B form에 있는 excel을 부르면 findwindow해서 가져온 핸들값이 항상 0이라는 것이지요~~
> 잉~~
> 고수님들의 멋진 말씀 부탁드립니다..
전 EXCEL의 instance를 검사를 아래와 같이 했습니다
try
FExcel := GetActiveOLEObject('Excel.Application'); {기존의 instance 인터페이스를 받는다}
if not VarIsEmpty(FExcel) then
FExcelCreated := True;
except
FExcelCreated := False;
end;
완전한 소스는 제 홈페이지(http://myhome.shinbiro.com/~cozykyd/index.htm)의
"공개 프로그램 소스 "에서
"Query한 결과를 MS-EXCEL 로 보내는 콤포넌트" 를 참고해 보세요