Page.GetFormulasU 方法 (Visio)
返回许多单元格的公式。
语法
expression。 GetFormulasU
( _SID_SRCStream()_
, _formulaArray()_
)
表达 一个代表 Page 对象的变量。
参数
名称 | 必需/可选 | 数据类型 | 说明 |
---|---|---|---|
SID_SRCStream () | 必需 | Integer | 用于标识要查询的单元格的流。 |
formulaArray () | 必需 | Variant | out 参数。 接收被查询单元格的公式的数组。 |
返回值
Nothing
注解
GetFormulasU 方法类似于 Cell 对象的 FormulaU 属性,只不过可以使用它一次获取多个单元格的公式,而不是一次获取一个单元格的公式。 GetFormulasU 方法是 GetResults 方法的一个特例,后者可用来获取单元格公式或结果。 设置对 GetFormulasU 方法的调用比设置 GetResults 方法涉及的工作量略少一些。
使用 GetFormulasU 方法可获取页面或母版任意形状集中任意单元格集的通用语法公式。
SID_SRCStream() 是一个 2 字节的整数数组。 SID_SRCStream () 应是 n> = 1 的 4 n 个 2 字节整数的一维数组。 GetFormulasU 方法将 SID_SRCStream() 解释为:
{sheetID, sectionIdx, rowIdx, cellIdx}n
其中 sheetID 为页面或主控形状上需要其单元格公式的 Shape 对象的 ID 属性。
注意
如果条目中的 sheetID 是 visInvalShapeID (-1) ,或者 sectionIdx 的底部字节是 visSectionInval (255) ,则将忽略该条目,并在相应的结果数组条目中返回空变体。 这是因为同一个 SID_SRCStream() 数组可用于对 GetFormulasU、SetFormulas 及类似方法的多个调用,调用方只需对调用之间的流进行细微改动即可。
如果 GetFormulasU 方法成功,则 formulaArray() 返回索引为 0 到 n - 1 的 n 个变量的一维数组。 每个变量都将公式作为字符串返回。 formulaArray() 是由 GetFormulasU 方法分配的 out 参数,它将所有权传递回调用方。 最后,调用方应对返回的数组执行 SafeArrayDestroy 过程。 请注意,SafeArrayDestroy 过程具有副作用,它会清除由数组项引用的变量,从而释放 GetFormulasU 方法返回的任何字符串。 (Microsoft Visual Basic 和 Microsoft Visual Basic for Applications为你处理此问题。) 如果 formulaArray () 为 Null,GetFormulasU 方法将失败。
注意
从 Microsoft Visio 2000 开始,您可以使用本地名称和通用名称来引用 Visio 形状、主控形状、文档、页面、行、加载项、单元格、超链接、样式、字体、主控形状快捷方式、UI 对象和图层。 例如,当用户命名形状时,用户将指定一个本地名称。 从 Microsoft Office Visio 2003 开始,ShapeSheet 电子表格在单元格公式和值中只显示通用名称。 (在以前的版本中,通用名称在用户界面中不可见。
) 作为开发人员,如果您不希望每次本地化解决方案时都更改名称,可以在程序中使用通用名称。 使用本地语法时,使用 GetFormulas 方法获取多个公式。 使用通用语法时,则使用 GetFormulasU 方法获取多个公式。
示例
以下宏演示如何使用 GetFormulasU 方法。 它假定有一个活动 Visio 页面,其上至少有三个形状。 它使用 GetFormulasU 获取形状 1 的宽度、形状 2 的高度以及形状 3 的角度。
此示例使用 Page 对象的 GetFormulasU 方法获取三个单元格公式。输入数组为每个单元格具有四个槽,而对于 Master 对象也是如此。 对于 Shape 或 Style 对象,每个单元格只需要三个段(节、行和单元格)。
Public Sub GetFormulasU_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.GetFormulasU 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 支持和反馈,获取有关如何接收支持和提供反馈的指南。