Compartilhar via


Método Page.GetResults (Visio)

Obtém os resultados ou fórmulas de várias células.

Sintaxe

expression. GetResults( _SID_SRCStream()_ , _Flags_ , _UnitsNamesOrCodes()_ , _resultArray()_ )

Expressão Uma variável que representa um objeto Page .

Parâmetros

Nome Obrigatório/Opcional Tipo de dados Descrição
SID_SRCStream() Obrigatório Integer Matriz que identifica as células a serem consultadas.
Flags Obrigatório Integer Sinalizadores que influenciam o tipo de entradas retornadas nos resultados.
UnitsNamesOrCodes() Obrigatório Variantes Matriz de unidades de medida nas quais os resultados devem ser retornados.
resultArray() Obrigatório Variantes Matriz que recebe resultados ou fórmulas das células consultadas.

Valor de retorno

Nada

Comentários

O método GetResults é como a propriedade Result para o objeto Cell, exceto que ele pode ser usado para obter os resultados (valores) de várias células de uma vez, em vez de uma célula por vez.

Para um objeto Page, você pode usar o método GetResults para obter resultados de qualquer conjunto de células em qualquer conjunto de formas da página.

SID_SRCStream() é uma matriz de números inteiros de 2 bytes. Para objetos Page , SID_SRCStream() deve ser uma matriz unidimensional de 4 n 2 bytes inteiros para n>= 1. O método GetResults interpreta SID_SRCStream() como:

{sheetID, sectionIdx, rowIdx, cellIdx }n

onde sheetID é a propriedade ID do objeto Shape na página cujo resultado de célula é desejado.

Observação

Se o sheetID em uma entrada for visInvalShapeID (-1) ou se o byte inferior de sectionIdx for visSectionInval (255), a entrada será ignorada e uma variante vazia será retornada na entrada da matriz de resultados correspondente. O motivo para isso é que a mesma matriz SID_SRCStream() pode ser usada em várias chamadas para GetResults, SetResults e métodos semelhantes, sendo necessário apenas que o chamador faça alterações mínimas no fluxo entre chamadas.

O parâmetro Flags indica em quais tipos de dados os resultados devem ser expressos. Seu valor deve ser um dos seguintes.

Constant Valor Descrição
visGetFloats 0 Resultados retornados como duplas (VT_R8).
visGetTruncatedInts 1 Resultados retornados como números inteiros longos truncados (VT_I4).
visGetRoundedInts 2 Resultados retornados como números inteiros longos arredondados (VT_I4).
visGetStrings 3 Resultados retornados como sequências de caracteres (VT_BSTR).
visGetFormulas 4 Fórmulas retornadas como sequências de caracteres (VT_BSTR).
visGetFormulasU 5 Fórmulas retornadas em sintaxe universal (VT_BSTR).

O parâmetro UnitsNamesOrCodes() é uma matriz que controla em quais unidades de medida resultados individuais são retornados. Cada entrada na matriz pode ser uma sequência de caracteres como "polegadas", "polegada", "pol." ou "p". As sequências de caracteres podem ser usadas para todas as unidades do Visio com suporte, como centímetros, metros, milhas e assim por diante. Você também pode indicar as unidades desejadas com constantes de números inteiros (visCentimeters, visInches e assim por diante) declaradas pela biblioteca de tipos do Visio. Observe que os valores especificados na matriz UnitsNamesOrCodes() não terão efeito se Flags for visGetFormulas.

Se UnitsNamesOrCodes() não for nulo, o aplicativo espera que ele seja uma matriz unidimensional de 1 <= uVariants. Cada entrada pode ser um código de número inteiro ou sequência de caracteres, ou vazio (nada). Se a entrada i 'th estiver vazia, o resultado i 'th retornado será retornado nas unidades designadas por UnitsNamesOrCodes(j), onde j é o índice da entrada anterior não vazia mais recente. Assim, se desejar que todos os valores retornados estejam nas mesmas unidades, você precisará apenas passar uma matriz UnitsNamesOrCodes() com uma entrada. Se não houver nenhuma entrada anterior não vazia ou se nenhuma matriz UnitsNameOrCodes() for fornecida, visNumber (0x20) será usado. Isso faz unidades internas (como a propriedade ResultIU de um objeto Cell) serem retornadas.

Se o método GetResults obtiver êxito, os resultados retornarão uma matriz unidimensional com n variantes indexadas de zero (0) a n - 1. O tipo de variantes retornadas é uma função de Flags. resultArray() é um argumento externo alocado pelo método GetResults, que passa a propriedade de volta ao chamador. Por fim, o chamador deve executar SafeArrayDestroy na matriz retornada. Observe que SafeArrayDestroy possui o efeito colateral de limpar as variantes referenciadas pelas entradas da matriz, desfazendo assim a alocação das sequências de caracteres que o método GetResults retorna. (O Microsoft Visual Basic e o Microsoft Visual Basic for Applications cuidam disso para você.)

Exemplo

O exemplo a seguir mostra como usar o método GetResults. Esse exemplo presume que haja uma página ativa com pelo menos três formas. Ele usa o método GetResults para obter a largura da forma 1, a altura da forma 2 e o ângulo da forma 3.

Este exemplo usa o método GetResults do objeto Page para obter três fórmulas de células. A matriz de entrada tem quatro slots para cada célula, como também teria para objetos Master. Para objetos Shape ou Style, apenas três slots seriam necessários para cada célula (seção, linha e célula).

 
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

Suporte e comentários

Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação? Confira Suporte e comentários sobre o VBA para Office a fim de obter orientação sobre as maneiras pelas quais você pode receber suporte e fornecer comentários.