2012-08-03 2 views
1

Я пытаюсь сделать простейшую вещь - соединить две формы 2d в visio с помощью макроса с GlueTo. Я сбросил две фигуры, добавил к ним точки подключения с «В» и «Вниз». Теперь, когда я пытаюсь подключить их с помощью мыши - все в порядке. Тогда я записал макрос:Соедините две 2-мерные фигуры в visio

Sub Macro1() 

'Enable diagram services 
Dim DiagramServices As Integer 
DiagramServices = ActiveDocument.DiagramServicesEnabled 
ActiveDocument.DiagramServicesEnabled = visServiceVersion140 

Dim UndoScopeID1 As Long 
UndoScopeID1 = Application.BeginUndoScope("1") 
ActiveWindow.DeselectAll 
ActiveWindow.Select Application.ActiveWindow.Page.Shapes.ItemFromID(1), visSelect 
Application.ActiveWindow.Selection.Move -1.161417, 0.669291 
Dim vsoCell1 As Visio.Cell 
Dim vsoCell2 As Visio.Cell 
Set vsoCell1 = Application.ActiveWindow.Page.Shapes.ItemFromID(1).CellsU("PinX") 
Set vsoCell2 = Application.ActiveWindow.Page.Shapes.ItemFromID(15).CellsSRC(7, 0, 0) 
vsoCell1.GlueTo vsoCell2 
Dim vsoCell3 As Cell 
Dim vsoCell4 As Cell 
Set vsoCell3 = Application.ActiveWindow.Page.Shapes.ItemFromID(1).CellsSRC(visSectionConnectionPts, 0, 0) 
Set vsoCell4 = Application.ActiveWindow.Page.Shapes.ItemFromID(15).CellsSRC(visSectionConnectionPts, 0, 0) 
vsoCell3.GlueTo vsoCell4 
Application.EndUndoScope UndoScopeID1, True 

'Restore diagram services 
ActiveDocument.DiagramServicesEnabled = DiagramServices 

End Sub 

И это не работает ... Если я отклеить эти формы и запустить записанный макрос, он будет бросать «недопустимом исходного объекта для этого действия»

Как может Я чиню это?

ответ

2

Записанный код очень специфичен для состояния чертежа при записи макроса. Когда вы отредактируете чертеж, он очень быстро сломается. Например, записанный код предполагает, что на странице уже есть 1-D форма, и у нее есть идентификатор 15 в коллекции фигур страницы. В записанном макросе есть много других очень хрупких предположений.

Я предлагаю лучше всего научиться программировать макрос самостоятельно, так как вы знаете функциональные требования и предположения, которые вы можете сделать о состоянии чертежа. В этом разделе книги Developing Visio Solutions вы узнаете, как писать код для объединения фигур вместе: Creating a Connected Drawing from a Program.

+0

Большое спасибо, Pat! Я добавил ручку управления к одной из фигур и попытался приклеить ее (не PinX, как в записанном макросе), и это сработало! – JleruOHeP

Смежные вопросы