open,closeとunwind-protectがあれば
安全なcall-withは各自で作れるよ

(define (call-with-io name proc open close)
 (let ((h (open name)))
  (and h (unwind-protect
    (lambda () (proc h))
    (lambda () (close h))))))
(define (call-with-ole name proc)
 (call-with-io name proc
  ole-object-create
  ole-object-destroy))

(call-with-ole "Excel.Application"
 (lambda (h) ... ))

※ここでのunwind-protect書式
(unwind-protect try-proc finally-proc)