Compartir a través de


Método Page.GetFormulas (Visio)

Devuelve las fórmulas de varias celdas.

Sintaxis

expresión. GetFormulas( _SID_SRCStream()_ , _formulaArray()_ )

Expresión Variable que representa un objeto Page .

Parameters

Nombre Obligatorio/opcional Tipo de datos Descripción
SID_SRCStream() Obligatorio Integer Secuencia que identifica las celdas cuyas fórmulas se desean obtener.
formulaArray() Obligatorio Variant Parámetro de salida. Matriz que recibe las fórmulas de las celdas consultadas.

Valor devuelto

Nothing

Comentarios

El método GetFormulas es similar a la propiedad Formula de un objeto Cell, pero difiere en que se puede utilizar para obtener las fórmulas de varias celdas al mismo tiempo en lugar de hacerlo de una en una. El método GetFormulas es una especialización del método GetResults, que se puede utilizar para obtener fórmulas o resultados de celdas. La configuración de una llamada al método GetFormulas conlleva algo menos de trabajo que la configuración del método GetResults.

En los objetos Page, puede utilizar el método GetFormulas para obtener las fórmulas de cualquier conjunto de celdas en cualquier conjunto de formas de la página o del patrón.

SID_SRCStream() es una matriz de enteros de 2 bytes. Para los objetos Page , SID_SRCStream() debe ser una matriz unidimensional de 4 n enteros de 2 bytes para n>= 1. El método GetFormulas interpreta SID_SRCStream() como:

{sheetID, sectionIdx, rowIdx, cellIdx}n

donde sheetID es la propiedad ID del objeto Shape de la página o el patrón cuya fórmula de celda se desea obtener.

Nota:

Si sheetID de una entrada es visInvalShapeID (-1) o si el byte inferior de sectionIdx es visSectionInval (255), la entrada se omitirá y se devolverá una variante vacía en la entrada de matriz de resultados correspondiente. La razón para esto es que se puede utilizar la misma matriz SID_SRCStream() en varias llamadas a los métodos GetFormulas, SetFormulas y similares; el llamador sólo necesitará realizar pequeñas modificaciones a la secuencia entre llamadas.

Si el método GetFormulas se ejecuta correctamente, formulaArray() devuelve una matriz unidimensional de n variantes indizadas de 0 a n - 1. Cada uno de estos valores devuelve una fórmula en forma de cadena. formulaArray() es un parámetro out asignado por el método GetFormulas , que devuelve la propiedad al autor de la llamada. El llamador deberá realizar finalmente el procedimiento SafeArrayDestroy en la matriz devuelta. Tenga en cuenta que el procedimiento SafeArrayDestroy tiene el efecto secundario de borrar las variantes a las que hacen referencia las entradas de la matriz, por lo que desasigna las cadenas que devuelve el método GetFormulas . (Microsoft Visual Basic y Microsoft Visual Basic para Aplicaciones se encargan de esto). Se produce un error en el método GetFormulas si formulaArray() es Null.

Nota:

A partir de Microsoft Visio 2000, puede usar nombres locales y universales para hacer referencia a formas, patrones, documentos, páginas, filas, complementos, celdas, hipervínculos, estilos, fuentes, accesos directos maestros, objetos de interfaz de usuario y capas de Visio. Cuando un usuario asigna un nombre a una forma, por ejemplo, el usuario especifica un nombre local. A partir de Microsoft Office Visio 2003, la hoja de cálculo ShapeSheet solo muestra nombres universales en fórmulas y valores de celda. (En versiones anteriores, los nombres universales no eran visibles en la interfaz de usuario).

Como programador, puede usar nombres universales en un programa cuando no desee cambiar un nombre cada vez que localice una solución. Utilice el método GetFormulas para obtener varias fórmulas cuando emplee la sintaxis local. Utilice el método GetFormulasU para obtener varias fórmulas cuando emplee la sintaxis universal.

Ejemplo:

En la macro siguiente se muestra cómo usar el método GetFormulas. Se da por supuesto que existe una página de Microsoft Visio activa que contiene al menos tres formas. Usa GetFormulas para obtener el ancho de la forma 1, el alto de la forma 2 y el ángulo de la forma 3.

Este ejemplo utiliza el método GetFormulas del objeto Page para obtener las tres fórmulas de celda. La matriz de entrada tiene cuatro posiciones para cada celda, como en el caso de los objetos Master. En el caso de los objetos Shape o Style, sólo se necesitarían tres posiciones para cada celda (sección, fila y celda).

 
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

Soporte técnico y comentarios

¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.