Q&A

  • 엑셀의 names개체에 접근할때.....[꼭좀봐주세요]
안녕하세요. 질문을 다시올립니다.

이번에는 좀 정리가 되게 질문하겠읍니다. 부디 자상한 설명부탁드립니다.

초보라서요..



제가 하려고 하는것은 이렇습니다.

먼저 엑셀파일의 어떤영역에 name을 삽입합니다.

그리고 그 name을 읽어들여서 그 name과 같은 속성을 가진 다른응용프로그램(캐드)의 개체를 찾아서 그 개체를 핸들링 하려하는데 name개체를 읽는것이 안됩니다.

다음 코드와 같이 엑셀의 names컬렉션의 name개체를 읽으려고 하는데요 자꾸

name을 담을 xl_names라는 변수가 배열이 아니라는 에러가 납니다.

사실 엑셀의 vba에서는 다음과 같이 개개의 name에 접근할수 있거든요

도대체 어떻게 해야 name개체에 접근할수 있을런지 정말 궁금합니다.

부디 초보를 어여삐 여겨 저좀 살려주세요.



//////////////////엑셀vba//////////////////////////////////

Set nms = ActiveWorkbook.Names

Set wks = Worksheets(1)

For r = 1 To nms.Count

wks.Cells(r, 2).Value = nms(r).Name

wks.Cells(r, 3).Value = nms(r).RefersToRange.Address

Next

///////////////////////////////////////////////////////////



///////////////델파이코드//////////////////////////////////



procedure TForm1.read_xls_data();

var

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

volume, num_xl_name,i : integer;

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(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[i].name; ///이부분에서 에러발생

end;



end;

///////////////////////////////////////////////////////////////////

0  COMMENTS