안녕하세요?? 또 엑셀에서 헤매고 있습니다..ㅠ.ㅠ
우여곡절 끝에 엑셀 화일들을 생성했으나..
리소스가 부족하여..진행이 안 된다는...ㅠ.ㅠ
쉬트 12개를 만들어야 하는데요..
대강 흐름은 데이타 읽어 와서 엑셀 열고
쉬트 선택후 작업하고 저장하고
QUIT로 빠지고..12번 반복이거든요..
근데 한 번 실행될 때마다 리소스를 먹더니..
85%에서 시작한 것이 8-9번 작업시 0%라는 에러가..ㅠ.ㅠ
아래는 엑셀에 쓰는 한 부분입니다..
혹시 아시는 분은 꼭 좀..ㅠ.ㅠ
아참 차일드폼에서 엑셀을 생성합니다..
메인폼 죽여야 리소스가 반환되더군요..ㅠ.ㅠ
다음은 소스입니다...^^:;;;
procedure Tfrm_5802.MakeXLFile ;
Var
XL : Variant;
i : Integer;
j : Integer;
k : Integer;
SrData : TsearchRec;
X_file : olevariant;
begin
IF NOT DirectoryExists('C:tempAsReport') THEN ForceDirectories ('C:tempAsReport');//디렉토리 지정
X_file := 'C:tempAsReport'+'NH-'+ Trim(Med_StYYMM.text) + '.xls';
//화일 존재시 화일 삭제
IF FindFirst(X_file, faArchive, SrData) = 0 THEN DeleteFile(X_file) ;
try
XL := CreateOLEObject('Excel.Application');
except
showmessage('Excel이 설치되어 있지 않습니다!!!');
exit;
end;
XL.WorkBooks.Add; //엑셀 워크북 추가
XL.Visible := True;
XL.Sheets['Sheet2'].Select ;
XL.Sheets['Sheet2'].Name := '02' ;
XL.Sheets['Sheet3'].Select ;
XL.Sheets['Sheet3'].Name := '03' ;
XL.Sheets['Sheet1'].Select ;
XL.Sheets['Sheet1'].Name := '01' ;
FOR i := 4 To 12 DO
BEGIN
XL.Sheets.Add;
XL.Sheets['Sheet' + IntToStr(i)].Select ;
IF i < 10 THEN
XL.Sheets['Sheet' + IntToStr(i)].Name := '0' + IntToStr(i)
ELSE XL.Sheets['Sheet' + IntToStr(i)].Name := IntToStr(i) ;
END; //For
//시트 정렬
For j := 1 To XL.Sheets.Count DO BEGIN
For k := 1 To (j - 1) DO BEGIN
IF (UpperCase(XL.Sheets[j].Name) < UpperCase(XL.Sheets[k].Name)) THEN
BEGIN
XL.Sheets[J].Move(XL.Sheets[K]) ;
END;//IF
END;//For k
END;//for j
//------- 데이터 INPUT --------------//
//-------데이터 INPUT END-------------//
// ----- 엑셀 편집
XL.Columns['A:I'].Select;
XL.Selection.ColumnWidth := 8.11 ;
XL.Selection.Font.Name := '돋움';
XL.Selection.Font.Size := 12 ;
XL.Sheets['01'].Name := '표지' ;
XL.ActiveWindow.Zoom := 75;
XL.ActiveSheet.PageSetup.LeftMargin := 80 ; // /28
XL.ActiveSheet.PageSetup.RightMargin := 80 ;
XL.ActiveSheet.PageSetup.Orientation := 2; // 1= 세로 2 = 가로
XL.DisplayAlerts := false;
XL.activeworkbook.SaveAs(X_file);
XL.Quit ;