Here's the one I use for generic conversion ...
;;=====================================================
(defun lisp-value (v)
;; the Holy Grail of vla->lisp conversion? ;-)
;; Copyright 2002 Vladimir Nesterovsky.
;; Free for use by any commercial entity with
;; less then $100 million annual revenue.
(cond ((= (type v) 'variant) (lisp-value (variant-value v)))
((= (type v) 'safearray) (mapcar 'lisp-value (safearray-value v)))
(t v)
)
)
;;
;;=====================================================