Q&A

  • 엑셀에 셀에 name을 지정하고 이것을 델파이에서...
안녕하세요.

또 질문을 올립니다. 죄송합니다.

제가 질문할 내용은요.

먼저 제가 엑셀파일의 셀에 name을 지정하였읍니다.

그 이유는 그 name과 같은 이름을 가진 캐드의 블럭을 찾아 name이 지정된 셀의 값을

캐드의 블록의 값과 일치시키려는 겁니다.



제가 만든 부분입니다.



procedure TForm1.read_xls_data();

var

xls, xlbook, xls_sheet, xl_range , elem : variant;

volume, num_xl_name,i : integer;

xl_names: variant;

tmp_name : array of string;

begin

try

xls := GetActiveOLEObject('Excel.Application');

except

on E: EOleSysError do begin

try

messagedlg('엑셀을 실행시키시고 다시 시도하십쇼', MtWarning, [mbok], 0); //엑셀을 실행

exit;

except

MessageDlg('Excel이 설치되어 있지 않습니다.', MtWarning, [mbok], 0);

Exit;

end;

end;

end;



xls_sheet:=xls.activesheet;

xlbook:=xls_sheet.parent;

xlbook.activate;

xl_names:=xlbook.names;

num_xl_name:=xl_names.count;

****** showmessage(inttostr(xl_names[1].name)); 이부분에서 에러가 납니다.(에러내용은 아래 설명드립니다.)

// setlength (xls_input_data,num_xl_name);

// setlength(tmp_name,num_xl_name);

// for i:=1 to num_xl_name do

// begin

// tmp_name[i-1]:= xl_names.index[1].name;

// showmessage(elem.name);

// end;

// showmessage (inttostr(num_xl_name));

// end;

end;





위와 같이 했는데

showmessage (inttostr(num_xl_name)); 이렇게 하면 name 개체의 수를 보여주는데

그 네임개체 각각의 값은 왜 안보여 주는지 모르겠읍니다.

혹시 variant와 무슨 상관 있는지요.

에러 내용을 보면

project traffic.exe raised exception class Evarianterror with message 'variant is not an array'

이렇게 variant는 배열이 아니어서 에러가 발생한다는 말 같은데

그럼 어떤형으로 엑셀의 name개체를 불러들여야 되는지, 아니면 name개체에 접근할때

'xl_names[1].name'과 같은 식이 아닌 다른 식으로 접근하는지 도저히 모르겠읍니다.

참고로 olevariant형으로 선언하고도 해보았으나 안되었읍니다.



부디 고수님들의 상세한 조언 부탁드립니다.

어디에 가면 자료가 있다. 이런식으로 답변해주시면 저같은 초보는 봐도 잘모르거든요

부디 이해안가는 설명이겠지만 초보자의 마음에서 다시한번 읽어주시고 상세한 답변좀 부탁드립니다.

그럼 이만,



0  COMMENTS