GetFormulas メソッド (Visio)Shape.GetFormulas method (Visio)

複数のセルの数式を返します。Returns the formulas of many cells.

構文Syntax

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

Shape オブジェクトを表す変数を取得します。expression A variable that represents a Shape object.

パラメーターParameters

名前Name 必須 / オプションRequired/Optional データ型Data type 説明Description
SID_SRCStream()SID_SRCStream() 必須Required 整数型 (Integer)Integer 問い合わせるセルを識別するストリームです。A stream identifying cells to be queried.
formulaArray ()formulaArray() 必須Required VariantVariant 出力パラメーターです。Out parameter. 問い合わせたセルの数式を受け取る配列です。An array that receives formulas of queried cells.

戻り値Return value

なしNothing

解説Remarks

GetFormulasメソッドは、 CellオブジェクトのFormulaプロパティに似ていますが、一度に1つのセルではなく、複数のセルの数式を取得するために使用することができます。The GetFormulas method is like the Formula property of a Cell object, except you can use it to obtain the formulas of many cells at once rather than one cell at a time. GetFormulas メソッドは、GetResults メソッドの特殊な形式であり、セルの数式または結果を取得する場合に使用します。The GetFormulas method is a specialization of the GetResults method, which can be used to obtain cell formulas or results. GetFormulas メソッドの呼び出しの設定は、GetResults メソッドの設定よりも手順が若干少なくなっています。Setting up a call to the GetFormulas method involves slightly less work than setting up the GetResults method.

Shapeオブジェクトでは、 GetFormulasメソッドを使用して、任意のセル集合の数式を取得できます。For Shape objects, you can use the GetFormulas method to get formulas of any set of cells.

SID_SRCStream() は 2 バイトの整数で構成される配列です。SID_SRCStream() is an array of 2-byte integers. Shapeオブジェクトの場合、 SID_SRCStream () は、n 個の n 個の__ 3 バイト整数の1次元配列である必要があります ( n >= 1)。For Shape objects, SID_SRCStream() should be a one-dimensional array of 3 n 2-byte integers for some n >= 1. GetFormulas はストリームを次のように解釈します。GetFormulas interprets the stream as:

{sectionIdx, rowIdx, cellIdx}n

_Sectionidx_は目的セルのセクションインデックス、 _rowIdx_は行インデックス、 _cellidx_はセルのインデックスです。where sectionIdx is the section index of the desired cell, rowIdx is its row index and cellIdx is its cell index.

GetFormulasメソッドが成功した場合、 formulaArray () は、0から_n_ -1 のインデックスが付けられた_n 個_のバリアントの1次元配列を返します。If the GetFormulas method succeeds, formulaArray() returns a one-dimensional array of n variants indexed from 0 to n - 1. 各バリアント値は数式を文字列として返します。Each variant returns a formula as a string. formulaArray() は、GetFormulas メソッドによって割り当てられる出力パラメーターであり、呼び出し側に所有権が戻されます。formulaArray() is an out parameter that is allocated by the GetFormulas method, which passes ownership back to the caller. 最終的には、呼び出し側は、返された配列に対して SafeArrayDestroy プロシージャを実行する必要があります。The caller should eventually perform the SafeArrayDestroy procedure on the returned array. SafeArrayDestroyプロシージャには、配列のエントリによって参照されるバリアントをクリアするという副作用があるため、 GetFormulasメソッドから返される文字列は解放されます。Note that the SafeArrayDestroy procedure has the side effect of clearing the variants referenced by the array's entries, hence deallocating any strings the GetFormulas method returns. (Microsoft Visual Basic と Visual Basic for Applications では、このことを考慮してください)。FormulaArray ()Nullの場合、 GetFormulasメソッドは失敗します。(Microsoft Visual Basic and Visual Basic for Applications take care of this for you.) The GetFormulas method fails if formulaArray() is Null.

注意

Microsoft Visio 2000 以降では、ローカル名と汎用名の両方を使用して、Visio 図形、マスターシェイプ、ドキュメント、ページ、行、アドオン、セル、ハイパーリンク、スタイル、フォント、マスターショートカット、UI オブジェクト、およびレイヤーを参照することができます。Beginning with Microsoft Visio 2000, you can use both local and universal names to refer to Visio shapes, masters, documents, pages, rows, add-ons, cells, hyperlinks, styles, fonts, master shortcuts, UI objects, and layers. ユーザーが図形に名前を指定した場合 (たとえば、ユーザーがローカル名を指定している場合など)。When a user names a shape, for example, the user is specifying a local name. Microsoft Office Visio 2003 以降、シェイプシートでは、セルの数式と値に汎用名だけが表示されます。Beginning with Microsoft Office Visio 2003, the ShapeSheet spreadsheet displays only universal names in cell formulas and values. (以前のバージョンでは、ユーザーインターフェイスに汎用名が表示されていませんでした)。(In prior versions, universal names were not visible in the user interface.)

汎用名をプログラム内で使用すると、ソリューションをローカライズするたびに名前を変更する必要がなくなります。As a developer, you can use universal names in a program when you don't want to change a name each time a solution is localized. ローカル構文を使用しているときに複数の数式を取得するには、 GetFormulasメソッドを使用します。Use the GetFormulas method to get more than one formula when you are using local syntax. 汎用構文を使用して図形を識別する場合に複数の図形を取得するには GetFormulasU メソッドを使用します。Use the GetFormulasU method to get more than one formula when you are using universal syntax.

Example

次のマクロは、 GetFormulasメソッドの使用方法を示しています。The following macro shows how to use the GetFormulas method. 少なくとも 3 個のシェイプを含むアクティブな Microsoft Office Visio ページがあることを前提としています。It assumes that there is an active Microsoft Visio page that has at least three shapes on it. GetFormulas を使用してシェイプ 1 の幅、シェイプ 2 の高さ、およびシェイプ 3 の角度を取得します。It uses GetFormulas to get the width of shape 1, the height of shape 2, and the angle of shape 3.

次の使用例は、 PageオブジェクトのGetFormulasメソッドを使用して、3つのセルの数式を取得します。This example uses the GetFormulas method of the Page object to get three cell formulas. 入力配列は、Master オブジェクトと同様に各セルの 4 個のスロットを持ちます。The input array has four slots for each cell, as it also would for Master objects. ShapeオブジェクトまたはStyleオブジェクトでは、各セル (セクション、行、セル) に3つのスロットのみが必要になります。For Shape or Style objects, only three slots would be needed for each cell (section, row, and cell).

 
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

サポートとフィードバックSupport and feedback

Office VBA またはこの説明書に関するご質問やフィードバックがありますか?Have questions or feedback about Office VBA or this documentation? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.