Método Master.GetResults (Visio)
Obtiene los resultados o fórmulas de varias celdas.
Sintaxis
expresión. GetResults
( _SID_SRCStream()_
, _Flags_
, _UnitsNamesOrCodes()_
, _resultArray()_
)
Expresión Variable que representa un objeto Master .
Parameters
Nombre | Obligatorio/opcional | Tipo de datos | Descripción |
---|---|---|---|
SID_SRCStream() | Obligatorio | Integer | Matriz que identifica las celdas cuyas fórmulas se desean obtener. |
Flags | Obligatorio | Integer | Marcas que influyen en el tipo de entradas devueltas en los resultados. |
UnitsNamesOrCodes() | Obligatorio | Variant | Matriz de unidades de medida en las que se deben devolver los resultados. |
resultArray() | Obligatorio | Variant | Parámetro de salida. Matriz que recibe los resultados o las fórmulas de las celdas consultadas. |
Valor devuelto
Nothing
Comentarios
El método GetResults es similar a la propiedad Result del objeto Cell, pero difiere en que se puede utilizar para obtener los resultados (valores) de varias celdas al mismo tiempo, en lugar de hacerlo de una en una.
En un objeto Master, puede utilizar el método GetResults para obtener los resultados de cualquier conjunto de celdas de cualquier conjunto de formas del patrón.
SID_SRCStream() es una matriz de enteros de 2 bytes. En el caso de los objetos Master , SID_SRCStream() debe ser una matriz unidimensional de 4 n enteros de 2 bytes para n>= 1. El método GetResults interpreta SID_SRCStream() como:
{sheetID, sectionIdx, rowIdx, cellIdx }n
donde sheetID es la propiedad ID del objeto Shape del patrón cuyo resultado 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 GetResults, SetResults y similares; el llamador sólo necesitará realizar pequeñas modificaciones a la secuencia entre llamadas.
El parámetro Flags indica el tipo de datos en el que se deben expresar los resultados devueltos. Su valor debe ser uno de los siguientes.
Constante | Valor | Descripción |
---|---|---|
visGetFloats | 0 | Resultados devueltos como valores de tipo Double (VT_R8). |
visGetTruncatedInts | 1 | Resultados devueltos como valores de tipo entero largos truncados (VT_I4). |
visGetRoundedInts | 2 | Resultados devueltos como valores de tipo entero largos redondeados (VT_I4). |
visGetStrings | 3 | Resultados devueltos como cadenas (VT_BSTR). |
visGetFormulas | 4 | Fórmulas devueltas como cadenas (VT_BSTR). |
visGetFormulasU | 5 | Fórmulas devueltas en la sintaxis universal (VT_BSTR). |
El parámetro UnitsNamesOrCodes() es una matriz que controla en qué unidades de medida se devuelven los resultados individuales. Cada entrada de la matriz puede ser una cadena como "pulgadas", "pulgada", "in", o "i". Las cadenas se pueden usar para todas las unidades de Visio admitidas, como centímetros, metros, millas, etc. También puede indicar las unidades deseadas con constantes de entero (visCentimeters, visInches, etc.) declaradas por la biblioteca de tipos de Visio. Tenga en cuenta que los valores especificados en la matriz UnitsNamesOrCodes() no tienen ningún efecto si Flags es visGetFormulas.
Si UnitsNamesOrCodes() no es null, la aplicación espera que sea una matriz unidimensional de 1 <= uVariants. Cada entrada puede ser un código de cadena o de entero, o estar vacía (Nothing). Si la entrada i 'th está vacía , el resultado devuelto i 'th se devuelve en las unidades designadas por UnitsNamesOrCodes(j), donde j es el índice de la entrada no vacía anterior más reciente. De este modo, si desea que todos los valores devueltos estén en las mismas unidades, sólo necesita pasar una matriz UnitsNamesOrCodes() con una entrada. Si no hay ninguna entrada no vacía anterior o si no se proporciona ninguna matriz UnitsNameOrCodes(), se usa visNumber (0x20). Esto hace que se devuelvan las unidades internas (como la propiedad ResultIU de un objeto Cell).
Si el método GetResults se ejecuta correctamente, devuelve una matriz unidimensional de n valores de tipo Variant indizados desde cero (0) hasta n - 1. El tipo de los valores devueltos es una función de Flags. El parámetro resultArray() es un parámetro de salida asignado por el método GetResults, que pasa la propiedad de nuevo al llamador. El llamador deberá realizar finalmente SafeArrayDestroy en la matriz devuelta. Tenga en cuenta que el procedimiento SafeArrayDestroy tiene el efecto secundario de borrar los valores de tipo Variant a los que hacen referencia las entradas de la matriz, anulando la asignación de las cadenas devueltas por el método GetResults. (Microsoft Visual Basic y Visual Basic para Aplicaciones se encargan de hacerlo).
Ejemplo:
En el ejemplo siguiente, se muestra cómo utilizar el método GetResults. En este ejemplo se da por hecho que existe una página activa que tiene al menos tres formas. Utiliza el método GetResults 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 GetResults del objeto Page para obtener tres fórmulas de celda. La matriz de entrada tiene 4 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 GetResults_Example()
On Error GoTo HandleError
Dim intCounter As Integer
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
'Get first two values in inches. The second element in
'the units array is left uninitialized (empty) because we
'want the second result in the same units as the first
'result. The third result is initialized in degrees. Note that
'units can be expressed as a string or an integer constant.
Dim avarUnits(1 To 3) As Variant
avarUnits(1) = "in."
avarUnits(3) = visDegrees
'Return results of cells as an array of floating point numbers.
Dim avarResults() As Variant
ActivePage.GetResults aintSheetSectionRowColumn, visGetFloats, _
avarUnits, avarResults
For intCounter = 0 To 3
Debug.Print avarResults(intCounter)
Next
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.