Méthode Master.DropMany (Visio)

Crée un ou plusieurs objets Shape dans une forme de base. Elle renvoie un tableau contenant les ID des objets Shape générés.

Syntaxe

expression. DropMany( _ObjectsToInstance()_ , _xyArray()_ , _IDArray()_ )

Expression Variable qui représente un objet Master .

Parameters

Nom Requis/Facultatif Type de données Description
ObjectsToInstance() Requis Variant Tableau qui identifie des formes de base ou d'autres objets servant à créer des formes.
xyArray() Requis Double Tableau de valeurs x et y successives déterminant les positions des nouvelles formes.
IDArray() Requis Integer Paramètre sortant. Tableau qui renvoie les ID des formes créées.

Valeur renvoyée

Entier

Remarques

La méthode DropMany équivaut à utiliser la méthode Drop d'un objet Page, Master ou Shape, excepté que vous pouvez utiliser la méthode DropMany pour créer plusieurs objets Shape à la fois, plutôt qu'un seul par appel de méthode. La méthode DropMany crée de nouveaux objets Shape sur la page, dans la forme de base ou dans la forme de groupe à laquelle elle est appliquée (cette forme est appelée « objet cible » dans la discussion suivante).

Vous pouvez identifier la forme de base à déplacer en transmettant la méthode DropMany à un objet Master ou à l'index ou au nom de la forme de base. Lorsque vous transmettez un objet, la méthode DropMany ne se limite pas à l'insertion d'une forme de base à partir du gabarit du document cible. L'objet peut être une forme de base d'un autre document ou d'un autre type d'objet.

Le passage d’entiers (index maîtres) ou de chaînes (noms principaux) à DropMany est plus rapide que le passage d’objets, mais les entiers ou les chaînes peuvent identifier uniquement les formes de base dans le gabarit de document du document sur lequel ils sont supprimés. Par conséquent, votre programme doit d’une manière ou d’une autre obtenir les maîtres en question dans le gabarit de document en premier lieu, à condition qu’ils n’étaient pas déjà là.

ObjectsToInstance() doit être un tableau unidimensionnel de n>= 1 variantes. Ses entrées identifient les objets à partir desquels vous désirez créer de nouveaux objets Shape. Une entrée fait généralement référence à un objet Master de l’application Microsoft Visio. Il peut également faire référence à un objet Shape ou Selection de l’application Visio ou même à un objet d’une autre application. L’application ne tient pas compte des limites inférieures et supérieures des entrées ObjetsÀCréer() du tableau. Appelez ces vlb et vub , respectivement.

  • Si ObjetsÀCréer(i) est une référence à un objet OLE fournissant une interface IDataObject (dans Microsoft Visual Basic pour Applications, une référence à une sélection, une forme, une forme de base, un repère, ou un objet OLE), une instance est créée pour l'objet auquel il fait référence. Cela revient essentiellement à appeler Drop(ObjetsÀCréer(i),x,y).

  • Si ObjectsToInstance(i) est l’entier j , une instance de l’objet Master dans le gabarit de document du document de l’objet cible dont l’index de base 1 est j est créé. La cellule EventDrop dans la section Events de la nouvelle forme n'est pas déclenchée. Utilisez plutôt la méthode Drop si vous voulez que la cellule EventDrop se déclenche.

  • Si ObjectsToInstance(i) est la chaîne s (ou une référence à la chaîne s ), une instance de l’objet Master avec le nom s dans le gabarit de document du document de l’objet cible est créée ; peut être égal à la propriété UniqueID ou Name de l’objet Master. La cellule EventDrop dans la section Events de la nouvelle forme n'est pas déclenchée. Utilisez plutôt la méthode Drop si vous voulez que la cellule EventDrop se déclenche.

  • Pour vlb<i<= vub , si ObjectsToInstance(i) est vide (Nothing ou non initialisé dans Microsoft Visual Basic), l’entrée i entraîne l’instance d’ObjectsToInstance(j),j est la plus grande valeur <i de sorte que ObjectsToInstance(j) n’est pas vide. Si vous souhaitez créer n instances du même élément, seul ObjetsÀCréer(vlb) doit être fourni.

Le paramètre xyArray() doit être un tableau unidimensionnel de 2 m doubles avec xylb de limite inférieure et xyub de limite supérieure , où m>= n. Les valeurs du tableau indiquent à la méthode DropMany où positionner les objets Shape qu'elle génère. ObjectsToInstance( vlb + ( i - 1)) est supprimé à ( xy [( i - 1)2 + xylb ], xy [(i - 1)2 + xylb + 1]) pour 1 <= i<= n.

Notez que m>n est autorisé. Pour n<i<= m , la i 'ième chose instance est la même chose que la n’ième chose instance. Ainsi, pour créer m>= 1 instances de la même chose, vous pouvez passer un tableau ObjectsToInstance() avec une entrée et un tableau xyArray() d’entrée m.

Si l'entité dont une instance est créée correspond à une forme de base, l'axe du nouvel objet Shape est placé au point xy indiqué. Dans le cas contraire, le centre des objets Shape est positionné au xy donné.

La valeur renvoyée par la méthode DropMany correspond au nombre d'entrées xy de TableauXY() traitées avec succès par DropMany. Elle renvoie la valeur m si le traitement de toutes les entrées réussit. Si certaines entrées sont correctement traitées avant qu’une erreur ne se produise, les objets Shape générés ne sont pas supprimés, ce qui génère une exception, mais retourne quand même une valeur positive.

En supposant que le traitement de toutes les entrées mxy réussit, le nombre de nouveaux objets Shape générés par la méthode DropMany équivaut généralement à m. À de rares exceptions près, (par exemple, si une instance est créée pour un objet Selection), il est possible de générer davantage de m objets Shape. L'appelant peut déterminer le nombre d'objets Shape générés en comparant le nombre de formes dans l'objet cible avant et après exécution de la méthode DropMany. L'appelant peut faire en sorte que les nouveaux objets Shape soient ceux avec les index les plus élevés dans la collection Shapes de l'objet cible.

Si la méthode DropMany retourne zéro (0), IDArray() retourne null (Nothing). Dans le cas contraire, il renvoie un tableau à une dimension de m entiers indexés de 0 à m - 1. TableauID() est un paramètre sortant attribué par la méthode DropMany et la propriété est transmise au programme qui a appelé la méthode DropMany. Ce dernier doit finalement exécuter la procédure SafeArrayDestroy sur le tableau renvoyé. (Microsoft Visual Basic et Microsoft Visual Basic pour Applications (VBA) s'en occupent pour vous.)

Si IDArray() renvoie une valeur non null (et non Nothing), IDArray( i - 1), 1 <= i<= intReturned , retourne l’ID de l’objet Shape produit par l’entrée i 'th xyArray(), à condition que l’entrée i 'th xyArray() ait produit exactement un objet Shape . Si l’entrée i 'th xyArray() a produit plusieurs objets Shape , -1 est retourné dans l’entrée. Toutes les entrées i , intReturned<= i<m , retournent -1.

Remarque

À partir de Microsoft Office Visio 2000, vous pouvez utiliser des noms locaux et universels pour vous reporter aux formes, formes de base, documents, pages, lignes, modules complémentaires, cellules, liens hypertexte, styles, polices, raccourcis de formes de base, objets UI et aux calques Visio. Lorsqu'un utilisateur nomme une forme, par exemple, il définit un nom local. À partir de Microsoft Office Visio 2003, la feuille de calcul ShapeSheet affiche uniquement les noms universels des formules et valeurs de cellules. (Dans les versions antérieures, les noms universels n’étaient pas visibles dans l’interface utilisateur.)

Si vous êtes développeur, vous pouvez utiliser les noms universels dans un programme lorsque vous ne voulez pas modifier un nom chaque fois qu'une solution est localisée. Utilisez la méthode DropMany pour déplacer plusieurs formes lorsque vous utilisez des noms locaux pour identifier les formes. Utilisez la méthode DropManyU pour déplacer plusieurs formes lorsque vous utilisez des noms universels pour identifier les formes.

Exemple

L'exemple suivant indique comment utiliser la méthode DropMany. Elle déplace une instance de chaque forme de base dans le gabarit de document de l'objet Document de la macro vers la page 1 de l'objet Document de la macro. Avant d'exécuter cette macro, veillez à ce que le gabarit de document comporte au moins une forme de base.

 
Public Sub DropMany_Example() 
 
 On Error GoTo HandleError 
 
 Dim vsoMasters As Visio.Masters 
 Dim intMasterCount As Integer 
 Set vsoMasters = ThisDocument.Masters 
 intMasterCount = vsoMasters.Count 
 
 ReDim varObjectsToInstance(1 To intMasterCount) As Variant 
 ReDim adblXYArray(1 To intMasterCount * 2) As Double 
 Dim intCounter As Integer 
 For intCounter = 1 To intMasterCount 
 
 'Pass name of object to drop to DropMany. 
 varObjectsToInstance(intCounter) = vsoMasters.Item(intCounter).Name 
 
 'Set x components of where to drop to 2,4,6,2,4,6,2,4,6,... 
 adblXYArray (intCounter * 2 - 1) = (((intCounter - 1) Mod 3) + 1) * 2 
 
 'Set y components to 2,2,2,4,4,4,6,6,6,... 
 adblXYArray (intCounter * 2) = Int((intCounter + 2) / 3) * 2 
 
 Next intCounter 
 
 Dim aintIDArray() As Integer 
 Dim intProcessed As Integer 
 
 intProcessed = ThisDocument.Pages(1).DropMany(varObjectsToInstance, _ 
 adblXYArray, aintIDArray) 
 Debug.Print intProcessed 
 
 For intCounter = LBound(aintIDArray) To UBound(aintIDArray) 
 Debug.Print intCounter; aintIDArray(intCounter) 
 Next intCounter 
 
 Exit Sub 
 
 HandleError: 
 MsgBox "Error" 
 
 Exit Sub 
 
End Sub

Assistance et commentaires

Avez-vous des questions ou des commentaires sur Office VBA ou sur cette documentation ? Consultez la rubrique concernant l’assistance pour Office VBA et l’envoi de commentaires afin d’obtenir des instructions pour recevoir une assistance et envoyer vos commentaires.