2015-08-10 4 views
1

В цикле первые три команды успешны. Но не четвертая строка цикла - там есть ошибка. Мы можем настроить свойства для outlineShape, но что не так с сваркой?VBA: ссылочный объект отсутствует в документе

Dim outlineShape As Shape 
Dim weldShape As Shape 

For Each s In sr 

     Set outlineShape = s.Outline.ConvertToObject 
     outlineShape.Fill.UniformColor.CMYKAssign 100, 0, 0, 0 
     s.Fill.UniformColor.CMYKAssign 0, 0, 0, 50 

     ' Set weldShape = outlineShape.Weld(s) ' error here! Method Weld of object IDrawShape failed 
     ' in debagger, the line shows: The referenced object no loger exist in the document 

Next s 
+0

'Weld' не является членом объекта' Shape', и ни один из них не является «Outline», насколько я могу видеть. https://msdn.microsoft.com/EN-US/library/office/ff193908. – CBRF23

+0

@ CBRF23 это coreldraw не excel –

+0

Извините, был поздно прошлой ночью. Я не могу найти ссылку на объектную модель coreldraw в Интернете. Я нашел их введение в VBA, которое очень хорошо сочетается, но не описывает метод сварки где-нибудь, что я мог видеть. – CBRF23

ответ

0

Работать отлично с corel x6.

Sub test() 
    Dim outlineShape As Shape 
    Dim weldShape As Shape 
    Dim s As Shape 

    For Each s In ActiveDocument.ActiveLayer.Shapes 

      Set outlineShape = s.Outline.ConvertToObject 
      outlineShape.Fill.UniformColor.CMYKAssign 100, 0, 0, 0 
      s.Fill.UniformColor.CMYKAssign 0, 0, 0, 50 

      Set weldShape = outlineShape.Weld(s)  
    Next s 


End Sub 

Попытка объявить S как форма и ваш sr изменения в «форме массива». Я считаю, что ваш объект sr не такой, какой вам нужен.