Page.DropManyU メソッド (Visio)

ページ上、マスター シェイプ内またはグループ内に 1 つまたは複数の Shape オブジェクトを新規作成します。 このメソッドは、作成された Shape オブジェクトの ID で構成される配列を返します。

構文

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

表現Page オブジェクトを表す変数。

パラメーター

名前 必須 / オプション データ型 説明
ObjectsToInstance() 必須 バリアント型 図形の作成元になるマスター シェイプまたはその他のオブジェクトを汎用名で識別します。
xyArray() 必須 倍精度浮動小数点型 (Double) 新しい図形の位置を指定する xy の値が交互に表された配列です。
IDArray() 必須 Integer 出力パラメーターです。 作成された図形の ID を返す配列です。

戻り値

整数

解説

DropManyU メソッドの使用は、PageMaster、または Shape オブジェクトの Drop メソッドの使用に似ていますが、DropManyU メソッドを使用して、メソッド呼び出しごとに 1 つではなく、多数の新しい Shape オブジェクトを一度に作成できます。 DropManyU メソッドは、ページ、マスター、または適用先のグループ図形に新しい Shape オブジェクトを作成します (この図形は、次の説明では"ターゲット オブジェクト" と呼ばれます)。

DropManyU メソッドを Master オブジェクトまたはマスターのインデックスまたはマスターの名前に渡すことで、ドロップするマスターシェイプを特定できます。 オブジェクトを渡す場合、 DropManyU は、削除先のドキュメントのドキュメント ステンシルからマスター シェイプを削除するだけでは制約されません。 オブジェクトには、別のドキュメントまたは別の種類のオブジェクトのマスターを指定できます。

整数 (マスター シェイプのインデックス) または文字列 (マスター シェイプの名前) を DropManyU に渡す方が、オブジェクトを渡すよりも高速に処理できますが、整数または文字列の場合は、ドロップ先の図面の図面ステンシルにあるマスター シェイプしか特定できません。 したがって、問題のマスター シェイプが図面ステンシルに存在しない場合、プログラムはまずそのマスター シェイプを図面ステンシルに格納する必要があります。

ObjectsToInstance()、n>= 1 バリアントの 1 次元配列である必要があります。 この配列のエントリは、新しい Shape オブジェクトの作成元となるオブジェクトを示します。 エントリは、通常 Microsoft Office Visio アプリケーションの Master オブジェクトを参照します。 ただし、Visio アプリケーションの Shape オブジェクト、Selection オブジェクト、または別のアプリケーションのオブジェクトを参照する場合もあります。 アプリケーションでは、ObjectsToInstance() エントリの配列の下限と上限は考慮されません。 これらの vlbvub をそれぞれ呼び出します。

  • ObjectsToInstance(i) が整数 j の場合、1 ベースのインデックスが j であるターゲット オブジェクトのドキュメント ステンシル内の Master オブジェクトのインスタンス。 新しい図形の [Events] セクションの [EventDrop] セルは実行されません。 [EventDrop] セルを実行するには、代わりに Drop メソッドを使用します。

  • ObjectsToInstance(i) が文字列 s (または文字列 s への参照) の場合は、ターゲット オブジェクトのドキュメント ステンシル内の名前 s を持つ Master オブジェクトのインスタンスが作成されます。s は、Master オブジェクトの UniqueID プロパティまたは NameU プロパティと等しい場合があります。 新しい図形の [Events] セクションの [EventDrop] セルは実行されません。 [EventDrop] セルを実行するには、代わりに Drop メソッドを使用します。

  • vlb<i<= vub の場合、ObjectsToInstance(i) が空 (Microsoft Visual Basic では Nothing または初期化されていない) 場合、エントリ i によって ObjectsToInstance(j) が再びインスタンス化されます。ここで、jObjectsToInstance(j) が空ではない最大値 <i です。 同じものの n 個のインスタンスを作成する場合は、 ObjectsToInstance(vlb) のみを指定する必要があります。

xyArray() パラメーターは、下限 xylb と上限 xyub を持つ 2 m 倍の 1 次元配列である必要があります (m>= n)。 配列内の値は 、DropManyU メソッドに、生成される Shape オブジェクトの位置を示します。 ObjectsToInstance()( vlb + ( i - 1)) は、 ( xy [( i - 1)2 + xylb ], xy [(i - 1)2 + xylb + 1]) で 1 <= i<= n にドロップされます。

m>n は許可されることに注意してください。 n<i<= m の場合、インスタンス化された i 'th モノは、インスタンス化された n 個のモノと同じです。 したがって、同じものの m>= 1 インスタンスを作成するには、1 つのエントリと m エントリ xyArray() 配列を持つ ObjectsToInstance() 配列を渡すことができます。

インスタンスを作成するエンティティがマスター シェイプである場合、新しい Shape オブジェクトの Pin は、指定された xy に配置されます。 それ以外の場合は、Shape オブジェクトの中心が、指定された xy に配置されます。

DropManyU メソッドによって返される整数値は、DropManyU メソッドが正常に処理した xyArray 内の xy エントリの数です。 すべてのエントリが正常に処理された場合、m が返されます。 エラーが発生する前に一部のエントリが正常に処理された場合、生成された Shape オブジェクトは削除されず、例外が発生しますが、正の整数が返されます。

すべての m 個の xy エントリが正常に処理された場合、DropManyU メソッドによって作成された新しい Shape オブジェクトの数は通常、m になります。 ただし Selection オブジェクトのインスタンスが作成された場合など、m 個を超える Shape オブジェクトが作成されることもあります。 DropManyU メソッドを実行する前と後でターゲット オブジェクト内にある図形の数を比較することにより、呼び出し側は作成された Shape オブジェクトの数を判別できます。 また呼び出し側は、新しい Shape オブジェクトが、ターゲット オブジェクトの Shapes コレクションで最大のインデックスを持つオブジェクトであることを判別できます。

DropManyU メソッドが 0 (0) を返す場合、IDArray() は null (Nothing) を返します。 それ以外の場合は、0 から m - 1 のインデックスが付いた m 整数の 1 次元配列を返します。 IDArray()DropManyU メソッドによって割り当てられる out パラメーターであり、所有権は DropManyU メソッドを呼び出したプログラムに渡されます。 最終的には、呼び出し側は、返された配列に対して SafeArrayDestroy プロシージャを実行する必要があります。 このため、GetResults メソッドによって返されるすべての文字列の割り当てが解除されます (Microsoft Visual Basic および Microsoft Visual Basic for Applications ではこの処理が自動的に行われます)。

IDArray() が null 以外 (Nothing ではない) を返す場合、IDArray( i - 1)、1 <= i<= intReturned は、i'thxyArray() エントリによって生成された Shape オブジェクトの ID を返します。i'thxyArray() エントリが 1 つの Shape オブジェクトを生成した場合です。 i 'th xyArray() エントリで複数の Shape オブジェクトが生成された場合、エントリに -1 が返されます。 すべてのエントリ iintReturned<= i<m 、return -1。

注:

Microsoft Visio 2000 以降では、ローカル名とユニバーサル名の両方を使用して、Visio の図形、マスター、ドキュメント、ページ、行、アドオン、セル、ハイパーリンク、スタイル、フォント、マスター ショートカット、UI オブジェクト、レイヤーを参照できます。 たとえば、ユーザーが図形に名前を付けると、ユーザーはローカル名を指定します。 Microsoft Office Visio 2003 以降、シェイプシート スプレッドシートには、セルの数式と値にユニバーサル名のみが表示されます。 (以前のバージョンでは、ユニバーサル名はユーザー インターフェイスに表示されませんでした)。

汎用名をプログラム内で使用すると、ソリューションをローカライズするたびに名前を変更する必要がなくなります。 ローカル名を使用して図形を識別する場合に複数の図形をドロップするには DropMany メソッドを使用します。 汎用名を使用して図形を識別する場合に複数の図形をドロップするには DropManyU メソッドを使用します。

次の例は、DropManyU メソッドの使い方を示します。 ここでは、マクロの Document オブジェクトの図面ステンシル内の各マスター シェイプの 1 つのインスタンスを、マクロの Document オブジェクトのページ 1 にドロップします。 このマクロを実行する前に、図面ステンシル内に少なくとも 1 つのマスター シェイプが必要です。

 
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

サポートとフィードバック

Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。