Partager via


Méthode Page.DropManyU (Visio)

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

Syntaxe

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

expression Variable qui représente un objet Page .

Paramètres

Nom Requis/Facultatif Type de données Description
ObjectsToInstance() Obligatoire Variant Identifie des formes de base ou d'autres objets permettant de créer des formes à l'aide de leur nom universel.
xyArray() Obligatoire Double Tableau des valeurs x et y successives qui définissent la position des nouvelles formes.
IDArray() Obligatoire Integer Paramètre sortant. Tableau qui renvoie les ID des formes créées.

Valeur renvoyée

Entier

Remarques

La méthode DropManyU revient à utiliser la méthode Drop d'un objet Page, Master ou Shape, excepté que vous pouvez utiliser la méthode DropManyU pour créer plusieurs nouveaux objets Shape à la fois, plutôt qu'un seul par appel de méthode. La méthode DropManyU 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 DropManyU à un objet Master ou encore, à l'index ou au nom de la forme de base. Lorsque vous transmettez un objet, la méthode DropManyU 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 master) ou de chaînes (noms master) à DropManyU 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 ObjectsToInstance(i) est l’entier j , un 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 ), un instance de l’objet Master avec le nom s dans le gabarit de document du document de l’objet cible est créé ; peut être égal à la propriété UniqueID ou NameU 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 DropManyU 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 Integer renvoyée par la méthode DropManyU correspond au nombre d'entrées xy de TableauXY traitées avec succès par DropManyU. 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 un entier positif.

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 DropManyU é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 DropManyU. 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 DropManyU renvoie zéro (0), TableauID() renvoie la valeur 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 DropManyU et la propriété est transmise au programme qui a appelé la méthode DropManyU. 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 DropManyU. 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 DropManyU_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 universal name of object to drop to DropManyU. 
 varObjectsToInstance(intCounter) = vsoMasters.ItemU(intCounter).NameU 
 
 '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).DropManyU(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.