Visio) (Master.GetFormulas 方法
會傳回很多儲存格的公式。
語法
expression。 GetFormulas
( _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 屬性 (需要此頁面或主圖形的儲存格公式)。
注意事項
如果專案中的 sheetID 是 visInvalShapeID (-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 物件也是同樣的情形。 如果是 Shape 或 Style 物件,則每一個儲存格只需要三個空位 (區段、資料列及儲存格)。
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 支援與意見反應。