共用方式為


Visio) (Master.GetFormulas 方法

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

語法

expressionGetFormulas( _SID_SRCStream()_ , _formulaArray()_ )

表達 代表 Master 物件的變數。

參數

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

傳回值

註解

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

如果是 Master 物件,您可以使用 GetFormulas 方法,在頁面或主圖形的任何一組圖形中取得任何一組儲存格的公式。

SID_SRCStream () 是 2 位元組整數的陣列。 對於 Master 物件,SID_SRCStream () 應該是 n>= 1 的 4 n 個 2 位元組整數的一維陣列。 GetFormulas 方法會將SID_SRCStream () 解譯為:

{sheetID, sectionIdx, rowIdx, cellIdx}n

其中的 sheetID 為頁面或主圖形上的 Shape 物件的 ID 屬性 (需要此頁面或主圖形的儲存格公式)。

注意事項

如果專案中的 sheetIDvisInvalShapeID (-1) 或 sectionIdx 的底部位元組是 visSectionInval (255) ,則會忽略該專案,並在對應的結果數位專案中傳回空的變體。 這是因為相同的SID_SRCStream () 數位列可用於對 GetFormulas、SetFormulas 的數個呼叫,以及呼叫端只需要在呼叫之間對數據流進行微幅變更的類似方法。

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

注意事項

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

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

範例

下列 VBA 巨集會示範如何使用 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 支援與意見反應