Partilhar via


Método Shape.GetFormulas (Visio)

Retorna as fórmulas de várias células.

Sintaxe

expression. GetFormulas( _SRCStream()_ , _formulaArray()_ )

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

Parâmetros

Nome Obrigatório/Opcional Tipo de dados Descrição
SID_SRCStream() Obrigatório Integer Um fluxo que identifica as células a serem consultadas.
formulaArray() Obrigatório Variantes Parâmetro externo. Uma matriz que recebe as fórmulas das células consultadas.

Valor de retorno

Nada

Comentários

O método GetFormulas é como a propriedade Formula de um objeto Cell, exceto que você pode usá-lo para obter as fórmulas de várias células de uma vez, em vez de uma célula por vez. O método GetFormulas é uma especialização do método GetResults, que pode ser usado para obter resultados ou fórmulas de células. Configurar uma chamada para o método GetFormulas envolve um pouco menos de trabalho que configurar o método GetResults.

Para objetos Shape, você pode usar o método GetFormulas para obter fórmulas de qualquer conjunto de células.

SID_SRCStream() é uma matriz de números inteiros de 2 bytes. Para objetos Shape , SID_SRCStream() deve ser uma matriz unidimensional de 3 n 2 bytes inteiros para alguns n>= 1. GetFormulas interpreta o fluxo como:

{sectionIdx, rowIdx, cellIdx}n

onde sectionIdx é o índice da seção da célula desejada, rowIdx é seu índice de linha e cellIdx é seu índice de célula.

Se o método GetFormulas obtiver êxito, formulaArray() retornará uma matriz unidimensional com n variantes indexadas de 0 a n - 1. Cada variante retorna uma fórmula como uma sequência de caracteres. formulaArray() é um parâmetro externo alocado pelo método GetFormulas, que passa a propriedade de volta ao chamador. Por fim, o chamador deve executar o procedimento SafeArrayDestroy na matriz retornada. Observe que o procedimento SafeArrayDestroy tem o efeito colateral de limpar as variantes referenciadas pelas entradas da matriz, desfazendo assim a alocação as sequências de caracteres que o método GetFormulas retorna. (Microsoft Visual Basic e Visual Basic for Applications cuidar disso para você.) O método GetFormulas falhará se formulaArray() for Null.

Observação

A partir do Microsoft Visio 2000, você pode usar nomes locais e universais para se referir a formas, mestres, documentos, páginas, linhas, complementos, células, hiperlinks, estilos, fontes, atalhos mestre, objetos UI e camadas do Visio. Quando um usuário nomeia uma forma, por exemplo, o usuário está especificando um nome local. A partir do Microsoft Office Visio 2003, a planilha ShapeSheet exibe apenas nomes universais em fórmulas de células e valores. (Em versões anteriores, os nomes universais não eram visíveis na interface do usuário.).

Como desenvolvedor, você poderá usar nomes universais em um programa quando não quiser alterar um nome a cada vez que uma solução for localizada. Use o método GetFormulas para obter mais de uma fórmula ao usar a sintaxe local. Use o método GetFormulasU para obter mais de uma fórmula ao usar a sintaxe universal.

Exemplo

A macro a seguir mostra como usar o método GetFormulas. Ela presume que haja uma página do Microsoft Visio ativa com pelo menos três formas. Ela usa GetFormulas para obter a largura da forma 1, a altura da forma 2 e o ângulo da forma 3.

Este exemplo usa o método GetFormulas 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 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

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.