Shape.GetFormulas メソッド (Visio)

複数のセルの数式を返します。

構文

expression. GetFormulas( _SRCStream()_ , _formulaArray()_ )

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

パラメーター

名前 必須 / オプション データ型 説明
SID_SRCStream() 必須 Integer 問い合わせるセルを識別するストリームです。
formulaArray() 必須 バリアント型 出力パラメーターです。 問い合わせたセルの数式を受け取る配列です。

戻り値

なし

解説

GetFormulas メソッドは、Cell オブジェクトの Formula メソッドに類似していますが、1 つずつではなく複数のセルの数式を一度に取得できる点が異なります。 GetFormulas メソッドは、GetResults メソッドの特殊な形式であり、セルの数式または結果を取得する場合に使用します。 GetFormulas メソッドの呼び出しの設定は、GetResults メソッドの設定よりも手順が若干少なくなっています。

Shape オブジェクトの場合、GetFormulas メソッドを使用して任意のセル集合の数式を取得できます。

SID_SRCStream() は 2 バイトの整数で構成される配列です。 Shape オブジェクトの場合、SID_SRCStream() は、一部の n>= 1 に対して 3 n 個の 2 バイト整数の 1 次元配列である必要があります。 GetFormulas はストリームを次のように解釈します。

{sectionIdx, rowIdx, cellIdx}n

この sectionIdx は、対象となるセルのセクション インデックスです。また rowIdx は、そのセルの行インデックスで、cellIdx は、そのセルのセル インデックスです。

GetFormulas メソッドが正常に終了すると、formulaArray() には 0 ~ n - 1 のインデックスが割り当てられた n 個のバリアント値で構成される 1 次元配列が返されます。 各バリアント値は数式を文字列として返します。 formulaArray() は、GetFormulas メソッドによって割り当てられる出力パラメーターであり、呼び出し側に所有権が戻されます。 最終的には、呼び出し側は、返された配列に対して SafeArrayDestroy プロシージャを実行する必要があります。 SafeArrayDestroy プロシージャは、配列のエントリによって参照されるバリアントをクリアする副作用があるため、GetFormulas メソッドが返す文字列の割り当てを解除することに注意してください。 (Microsoft Visual Basic と Visual Basic for Applications がこれを自動的に管理します)。formulaArray()Null の場合、GetFormulas メソッドは失敗します。

注:

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

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

次のマクロは、GetFormulas メソッドの使い方を示します。 少なくとも 3 個のシェイプを含むアクティブな Microsoft Office Visio ページがあることを前提としています。 GetFormulas を使用してシェイプ 1 の幅、シェイプ 2 の高さ、およびシェイプ 3 の角度を取得します。

この例は、Page オブジェクトの GetFormulas メソッドを使用して 3 個のセル数式を取得します。 入力配列は、Master オブジェクトと同様に各セルの 4 個のスロットを持ちます。 Shape オブジェクトまたは Style オブジェクトの場合、各セル (セクション、行、セル) に必要なスロットは 3 つだけです。

 
Public Sub GetFormulas_Example() 
 
 On Error GoTo HandleError 
 
 Dim aintSheetSectionRowColumn(1 To (3 * 4)) As Integer 
 
 aintSheetSectionRowColumn(1) = ActivePage.Shapes(1).ID 
 aintSheetSectionRowColumn(2) = visSectionObject 
 aintSheetSectionRowColumn(3) = visRowXFormOut 
 aintSheetSectionRowColumn(4) = visXFormWidth 
 
 aintSheetSectionRowColumn(5) = ActivePage.Shapes(2).ID 
 aintSheetSectionRowColumn(6) = visSectionObject 
 aintSheetSectionRowColumn(7) = visRowXFormOut 
 aintSheetSectionRowColumn(8) = visXFormHeight 
 
 aintSheetSectionRowColumn(9) = ActivePage.Shapes(3).ID 
 aintSheetSectionRowColumn(10) = visSectionObject 
 aintSheetSectionRowColumn(11) = visRowXFormOut 
 aintSheetSectionRowColumn(12) = visXFormAngle 
 
 'Return the formulas of the cells. 
 Dim avarFormulaArray() As Variant 
 ActivePage.GetFormulas aintSheetSectionRowColumn, avarFormulaArray 
 
 Debug.Print "Shape 1 width is "; avarFormulaArray(0) 
 Debug.Print "Shape 2 height is "; avarFormulaArray(1) 
 Debug.Print "Shape 3 angle is "; avarFormulaArray(2) 
 
 
Exit Sub 
 
HandleError: 
 MsgBox "Error" 
Exit Sub 
 
End Sub

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

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