Thanks to Larry. I want to pass the IDispatch pointer of other COM object to AddShapeInfo or pass null to tell x do nothing. for example. Rect= Dispatch("Rect.Document") ShapeSet = Dispatch("xxx.Document") ShapeSet.AddShapeInfo("Rect", 0, Shape) or ShapeSet.AddShapeInfo("EmptyShape", 0, None)