Share via


Shape.GetFormulas 方法 (Visio)

會傳回很多儲存格的公式。

語法

expressionGetFormulas( _SRCStream()_ , _formulaArray()_ )

表達 代表 Shape 物件的變數。

參數

名稱 必要/選用 資料類型 描述
SID_SRCStream () 必要 整數 會識別要查詢之儲存格的資料流。
formulaArray () 必要 Variant 輸出參數。 會接收查詢儲存格公式的陣列。

傳回值

註解

GetFormulas 方法就像 Cell 物件的 Formula 屬性,但您可以使用這個方法一次取得很多儲存格的公式,而不是一次取得一個儲存格的公式。 GetFormulas 方法是 GetResults 方法的特殊化,可以用來取得儲存格公式或結果。 設定呼叫 GetFormulas 方法所涉及的工作比設定 GetResults 方法所涉及的工作稍微少一些。

如果是 Shape 物件,您可以使用 GetFormulas 方法來取得任何一組儲存格的公式。

SID_SRCStream () 是 2 位元組整數的陣列。 針對Shape物件,SID_SRCStream () 應該是 3 n個 2 位元組整數的一維陣列,某些n> = 1。 GetFormulas 會將資料流程解譯為:

{sectionIdx, rowIdx, cellIdx}n

其中 sectionIdx 是所要儲存格的區段索引,rowIdx 是它的資料列索引,而 cellIdx 則是它的儲存格索引。

如果GetFormulas方法成功,formulaArray () 會傳回從 0 到n - 1 索引的n變體一維陣列。 每個變體都會以字串形式傳回公式。 formulaArray () 是由 GetFormulas 方法配置的 out 參數,它會將擁有權傳回給呼叫端。 呼叫端最後應該會在傳回的陣列上執行 SafeArrayDestroy 程式。 請注意, SafeArrayDestroy 程式的副作用是清除陣列專案所參考的變體,因此會解除配置 GetFormulas 方法傳回的任何字串。 (Microsoft Visual Basic 和 Visual Basic for Applications 會為您處理此問題。) 如果formulaArray () NullGetFormulas方法就會失敗。

注意事項

從 Microsoft Visio 2000 開始,您可以使用本機和通用名稱來參照 Visio 圖形、主圖形、檔、頁面、列、附加元件、儲存格、超連結、樣式、字型、主圖形快捷方式、UI 物件和圖層。 例如,當使用者為圖形命名時,使用者會指定本機名稱。 從 Microsoft Office Visio 2003 開始,ShapeSheet 試算表只會在儲存格公式和值中顯示通用名稱。 (在舊版中,使用者介面中看不到通用名稱。)

身為開發人員,如果您不希望每次將方案本土化時就要變更名稱,可以在程式中使用通用名稱。 使用本機語法時,使用 GetFormulas 方法可取得一個以上的公式。 若是使用通用語法,請使用 GetFormulasU 方法取得一個以上的公式。

範例

下列宏示範如何使用 GetFormulas 方法。 它假設有一個作用中的 Microsoft Visio 頁面,其中至少有三個圖形。 它會使用 GetFormulas 來取得圖案 1 的寬度、圖案 2 的高度,以及圖案 3 的角度。

這個範例會使用 Page 物件的 GetFormulas 方法來取得三個儲存格公式。 輸入陣列對於每一個儲存格會有四個空位,Master 物件也是同樣的情形。 如果是 ShapeStyle 物件,則每一個儲存格只需要三個空位 (區段、資料列及儲存格)。

 
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 支援與意見反應