MS Visio Перетащите пользовательскую фигуру с помощью VBA - PullRequest
0 голосов
/ 04 июля 2018

Я не могу понять, как отбросить фигуру с помощью VBA.

Я хочу сделать следующее: пользователь открывает пользовательскую форму и вводит что-то в текстовые поля. При нажатии на кнопку команды я хочу загрузить Shape (то есть ресурс) из пользовательского трафарета (например, shape.vssx), записать пользовательские записи в ShapeData (то есть записать строку имени в Props.Name), а затем удалить его где-нибудь на Лист. Я знаю, что должен использовать метод Shape.Drop, но как мне сослаться на конкретную мастер-форму, которую я хочу использовать для создания новой формы?

Пока я пытаюсь с этим

Private Sub CommandButton1_Click()
   Dim shp As Visio.Shape
   Dim page As Visio.page
   Set page = Application.ActiveWindow.page
   Set shp = Application.Documents.Item("shapes.vssx").Masters.ItemU("ressource")

   page.Drop shp, 1, 1
End Sub

Что возвращает несоответствие типов. Чего мне не хватает?

1 Ответ

0 голосов
/ 04 июля 2018

Вы хотите сбросить Master, а не Shape, поэтому попробуйте эту модификацию своего кода (не проверено):

Private Sub CommandButton1_Click()
   Dim mst as Visio.Master
   Dim shp As Visio.Shape
   Dim pag As Visio.page
   Set pag = Application.ActiveWindow.Page
   Set mst = Application.Documents.Item("shapes.vssx").Masters.ItemU("ressource")
   'You might also want to add some checks that the target document and then master exist
   Set shp = pag.Drop(mst, 1, 1)
End Sub
...