(defun C:Auto1()
(prompt “n RB 객체를 선택하여 주십시오.”)
(setq ent (ssget))
(vl-load-com)
;; Excel 개체를 불러온다.
(setq msex (vlax-get-or-create-object “EXCEL.Application”))
;; Excel Application을 보이게 한다.
(vla-put-visible msex :vlax-true)
;; WorkBooks을 를 읽고
(setq Books (vlax-get-property msex ‘ActiveWorkBook))
;; Sheets를 읽고
(setq Sheets (vlax-get-property Books ‘Sheets))
;; 각 Sheet 개수을 확인한 후
(setq cnt (vlax-get-property Sheets ‘Count))
(setq k 1)
(while (<= k cnt)
;; 각 Sheet를 읽어 온다.
(setq sheet (vlax-get-property sheets ‘Item k))
(setq col_range (vlax-get-property sheet ‘UsedRange))
(setq columns (vlax-get-property col_range ‘columns))
(setq col_cnt (vlax-get-property columns ‘count))
(setq row 1)
(setq col 1)
(setq y 0)
;; Sheet의 이름을 확인 후 “RB” 이면
(if (= (vlax-get-property sheet ‘Name) “RB”)
(progn
(repeat col_cnt
(setq range (vlax-get-property col_range ‘item row col))
(setq value (vlax-variant-value range))
(setq pt (/ value 10))
(command “copy” ent “” “0,0” (list pt y))
;; Range 객체 반환
(vlax-release-object range)
(setq col (+ 1 col))
)
)
)
(vlax-release-object sheet)
(setq k (1+ k))
)
;; 마지막으로 읽어들인 개체는 반환시킵니다.
(vlax-release-object sheets)
(vlax-release-object books)
(vlax-release-object msex)
(vlax-release-object columns)
(princ)
위 LISP은 엑셀에서 지정된 하나의 열의 숫자값을 읽어와
선택한 개체를 그 숫자값을 x좌표로 하여 복사하는 리습을 구성한것입니다.
엑셀 연동까지는 되는거 같은데
; 오류: 잘못된 인수 유형: numberp: #<VLA-OBJECT Range 0000000030554e78>
이라고 뜨며 진행이 안되네요 ㅜㅜ
아마도
(repeat col_cnt
(setq range (vlax-get-property col_range ‘item row col))
(setq value (vlax-variant-value range))
(setq pt (/ value 10))
(command “copy” ent “” “0,0” (list pt y))
;; Range 객체 반환
(vlax-release-object range)
(setq col (+ 1 col))
)
이 부분에서 에러가 나는거 같은데 도와 주십시오 ㅜㅜ