untested (copy-blk "north")
starts in the folder the current drawing is in. if you want to start in a certain folder change the path to that. you will still have to select the block tho.
(defun copy-blk (blk / dwg blkdbx catch odbx)
(vl-load-com)
(setq path (getvar 'DWGPREFIX))
(if (setq dwg (getfiled "Select Block:" path "" 33))
(progn
(if (< (atoi (substr (getvar "ACADVER") 1 2)) 16)
(setq odbx (vlax-create-object "ObjectDBX.AxDbDocument"))
(setq odbx (vlax-create-object
(strcat "ObjectDBX.AxDbDocument." (substr (getvar "ACADVER") 1 2))
)
)
)
(vla-open odbx dwg)
(if (not
(setq
catch (vl-catch-all-error-p
(vl-catch-all-apply
(function (lambda () (setq blkdbx (vla-item (vla-get-blocks odbx) blk))))
)
)
)
)
(vla-copyobjects
odbx
(vlax-safearray-fill
(vlax-make-safearray vlax-vbObject '(0 . 0))
(list blkdbx)
)
(vla-get-blocks (vla-get-activedocument (vlax-get-acad-object)))
)
)
(vlax-release-object odbx)
(if (and (null catch)
(vla-item (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object)))
blk
)
)
T
nil
)
)
nil
)
)