And here's another way of doing this, skipping the use of the (vlax-curve) functions. This is handy to know since the curve functions are not easily available in VBA, but this methodolgy will work.
;for testing, select pline
(setq pline (vlax-ename->vla-object (car (entsel "\nSelect pline: "))))
;get the startpoint, the coordinate property doesn't like the (vlax-get) way of obtaining the data
(setq stPt (vlax-safearray->list (vlax-variant-value (vla-get-coordinate pline 0))))
;find # of vertices, O based...note that the coordinates property works fine with (vlax-get)
(setq vert# (1- (/ (length (vlax-get pline 'coordinates)) 2)))
;get the endpoint
(setq endPt (vlax-safearray->list (vlax-variant-value (vla-get-coordinate pline vert#))))