没使用过CorelDraw,但你的问题倒是可以说上一二:
你的数组c()是什么类型?
从你这句: Set c(i) = OrigSelection(2).Shapes(c(i)).Weld( c(i - 1), True, False)
来看:
Shapes(c(i)).Wel.......... 这儿c()应该是数值类型的!
Set c(i) = OrigS........ 这儿c()又得是对象类型的!
你说,你的“类型”能够匹配吗?就算c()为变体类型,但:
OrigSelection(2).Shapes(c(i)).Weld( c(i - 1), True, False) 
这儿两处用到的c()都得要求为数值的值,
如果你这时访问到的元素,它的值为Object的、或者Empty,
同样会报运行时错误!终归结底,你的代码不仅语法问题那么简单,
更重要的是逻辑问题没有理清楚!