Page.GetFormulasU メソッド (Visio)
複数のセルの数式を返します。
構文
expression. GetFormulasU
( _SID_SRCStream()_
, _formulaArray()_
)
式Page オブジェクトを表す変数。
パラメーター
名前 | 必須 / オプション | データ型 | 説明 |
---|---|---|---|
SID_SRCStream() | 必須 | Integer | 問い合わせるセルを識別するストリームです。 |
formulaArray() | 必須 | バリアント型 | 出力パラメーターです。 問い合わせたセルの数式を受け取る配列です。 |
戻り値
なし
解説
GetFormulasU メソッドは、Cell オブジェクトの FormulaU プロパティに似ていますが、一度に 1 つのセルではなく、多数のセルの数式を一度に取得できます。 GetFormulasU メソッドは、GetResults メソッドの特殊な形式であり、セルの数式または結果を取得する場合に使用します。 GetFormulasU メソッドの呼び出しの設定は、GetResults メソッドの設定よりも手順が若干少なくなっています。
GetFormulasU メソッドを使用して、ページまたはマスター シェイプの任意の図形セット内の任意のセル セットのユニバーサル構文で数式を取得します。
SID_SRCStream() は 2 バイトの整数で構成される配列です。 SID_SRCStream() は、n>= 1 の場合、4 n 個の 2 バイト整数の 1 次元配列である必要があります。 GetFormulasU メソッドは SID_SRCStream() を次のように解釈します。
{sheetID, sectionIdx, rowIdx, cellIdx}n
この sheetID は、セルの数式を求めるページまたはマスター シェイプ上にある Shape オブジェクトの ID プロパティです。
注:
エントリの sheetID が visInvalShapeID (-1) の場合、または sectionIdx の下位バイトが visSectionInval (255) の場合、エントリは無視され、対応する結果配列エントリに空のバリアントが返されます。 その理由は、同じ SID_SRCStream() 配列を GetFormulasU、 SetFormulas、および呼び出し元と同様のメソッドへの複数の呼び出しで使用でき、呼び出し間のストリームに軽微な変更を加える必要があるだけであるためです。
GetFormulasU メソッドが正常に終了すると、formulaArray() には 0 ~ n - 1 のインデックスが割り当てられた n 個のバリアント値で構成される 1 次元配列が返されます。 各バリアント値は数式を文字列として返します。 formulaArray() は、GetFormulasU メソッドによって割り当てられる出力パラメーターであり、呼び出し側に所有権が戻されます。 最終的には、呼び出し側は、返された配列に対して SafeArrayDestroy プロシージャを実行する必要があります。 SafeArrayDestroy プロシージャは、配列のエントリによって参照されるバリアントをクリアする副作用があるため、GetFormulasU メソッドが返す文字列の割り当てを解除することに注意してください。 (Microsoft Visual Basic と Microsoft Visual Basic for Applicationsがこれを管理します)。formulaArray() が Null の場合、GetFormulasU メソッドは失敗します。
注:
Microsoft Visio 2000 以降では、ローカル名とユニバーサル名の両方を使用して、Visio の図形、マスター、ドキュメント、ページ、行、アドオン、セル、ハイパーリンク、スタイル、フォント、マスター ショートカット、UI オブジェクト、レイヤーを参照できます。 たとえば、ユーザーが図形に名前を付けると、ユーザーはローカル名を指定します。 Microsoft Office Visio 2003 以降、シェイプシート スプレッドシートには、セルの数式と値にユニバーサル名のみが表示されます。 (以前のバージョンでは、ユニバーサル名はユーザー インターフェイスに表示されませんでした)。
汎用名をプログラム内で使用すると、ソリューションをローカライズするたびに名前を変更する必要がなくなります。 ローカル構文を使用して図形を識別する場合に複数の図形を取得するには GetFormulas メソッドを使用します。 汎用構文を使用して図形を識別する場合に複数の図形を取得するには GetFormulasU メソッドを使用します。
例
次のマクロは、GetFormulasU メソッドの使い方を示します。 少なくとも 3 個のシェイプを含むアクティブ Visio ページがあることを前提としています。 GetFormulasU を使用してシェイプ 1 の幅、シェイプ 2 の高さ、およびシェイプ 3 の角度を取得します。
この例では、Page オブジェクトの GetFormulasU メソッドを使用して、3 つのセル数式を取得します。入力配列には、Master オブジェクトの場合と同様に、各セルに 4 つのスロットがあります。 Shape オブジェクトまたは Style オブジェクトの場合、各セル (セクション、行、セル) に必要なスロットは 3 つだけです。
Public Sub GetFormulasU_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.GetFormulasU 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 のサポートおよびフィードバックを参照してください。