Page.GetFormulas メソッド (Visio)
複数のセルの数式を返します。
構文
expression. GetFormulas
( _SID_SRCStream()_
, _formulaArray()_
)
式Page オブジェクトを表す変数。
パラメーター
名前 | 必須 / オプション | データ型 | 説明 |
---|---|---|---|
SID_SRCStream() | 必須 | Integer | 問い合わせるセルを識別するストリームです。 |
formulaArray() | 必須 | バリアント型 | 出力パラメーターです。 問い合わせたセルの数式を受け取る配列です。 |
戻り値
なし
解説
GetFormulas メソッドは、Cell オブジェクトの Formula メソッドに類似していますが、1 つずつではなく複数のセルの数式を一度に取得できる点が異なります。 GetFormulas メソッドは、GetResults メソッドの特殊な形式であり、セルの数式または結果を取得する場合に使用します。 GetFormulas メソッドの呼び出しの設定は、GetResults メソッドの設定よりも手順が若干少なくなっています。
Page オブジェクトの場合、GetFormulas メソッドを使用して任意のマスター シェイプまたはページの任意の図形集合内にあるセル集合の数式を取得できます。
SID_SRCStream() は 2 バイトの整数で構成される配列です。 Page オブジェクトの場合、SID_SRCStream() は、n>= 1 の場合、4 n 個の 2 バイト整数の 1 次元配列である必要があります。 GetFormulas メソッドは SID_SRCStream() を次のように解釈します。
{sheetID, sectionIdx, rowIdx, cellIdx}n
この sheetID は、セルの数式を求めるページまたはマスター シェイプ上にある Shape オブジェクトの ID プロパティです。
注:
エントリの sheetID が visInvalShapeID (-1) の場合、または sectionIdx の下位バイトが visSectionInval (255) の場合、エントリは無視され、対応する結果配列エントリに空のバリアントが返されます。 これは、呼び出し元が呼び出し間のストリームに軽微な変更を加えるだけで済む GetFormulas、SetFormulas、および同様のメソッドに対して、同じ SID_SRCStream() 配列を複数の呼び出しで使用できるためです。
GetFormulas メソッドが正常に終了すると、formulaArray() には 0 ~ n - 1 のインデックスが割り当てられた n 個のバリアント値で構成される 1 次元配列が返されます。 各バリアント値は数式を文字列として返します。 formulaArray() は、GetFormulas メソッドによって割り当てられる出力パラメーターであり、呼び出し側に所有権が戻されます。 最終的には、呼び出し側は、返された配列に対して SafeArrayDestroy プロシージャを実行する必要があります。 SafeArrayDestroy プロシージャは、配列のエントリによって参照されるバリアントをクリアする副作用があるため、GetFormulas メソッドが返す文字列の割り当てを解除することに注意してください。 (Microsoft Visual Basic と Microsoft 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 のサポートおよびフィードバックを参照してください。