Метод Shape.GetFormulas (Visio)

Возвращает формулы многих ячеек.

Синтаксис

выражение. GetFormulas( _SRCStream()_ , _formulaArray()_ )

Выражение Переменная, представляющая объект Shape .

Параметры

Имя Обязательный или необязательный Тип данных Описание
SID_SRCStream() Обязательный Integer Поток, определяющий запрашиваемые ячейки.
formulaArray() Обязательный Variant Параметр Out. Массив, получающий формулы запрашиваемых ячеек.

Возвращаемое значение

Отсутствует

Примечания

Метод GetFormulas похож на свойство Formula объекта Cell , за исключением того, что его можно использовать для получения формул нескольких ячеек одновременно, а не одной ячейки за раз. Метод GetFormulas является специализацией метода GetResults , который можно использовать для получения формул ячеек или результатов. Настройка вызова метода GetFormulas требует немного меньше работы, чем настройка метода GetResults .

Для объектов Shape можно использовать метод GetFormulas для получения формул любого набора ячеек.

SID_SRCStream() — это массив из 2-байтовых целых чисел. Для объектов ShapeSID_SRCStream() должен быть одномерным массивом из 3 n 2-байтовых целых чисел для некоторых n>= 1. GetFormulas интерпретирует поток как:

{sectionIdx, rowIdx, cellIdx}n

где sectionIdx — это индекс раздела нужной ячейки, rowIdx — индекс строки, а cellIdx — индекс ячейки.

Если метод GetFormulas завершается успешно, функция formulaArray() возвращает одномерный массив из n вариантов, индексируемых от 0 до n - 1. Каждый вариант возвращает формулу в виде строки. formulaArray() — это параметр out, выделенный методом GetFormulas , который передает владение вызывающей стороне. В конечном итоге вызывающий объект должен выполнить процедуру SafeArrayDe в возвращаемом массиве. Обратите внимание, что процедура SafeArrayDeties имеет побочный эффект очистки вариантов, на которые ссылаются записи массива, что позволяет освободить все строки, возвращаемые методом GetFormulas . (Microsoft Visual Basic и Visual Basic для приложений позаботиться об этом за вас.) Метод GetFormulas завершается ошибкой, если formulaArray() имеет значение NULL.

Примечание.

Начиная с Microsoft Visio 2000, вы можете использовать локальные и универсальные имена для ссылки на фигуры Visio, образцы, документы, страницы, строки, надстройки, ячейки, гиперссылки, стили, шрифты, основные сочетания клавиш, объекты пользовательского интерфейса и слои. Например, когда пользователь присваивает имя фигуре, пользователь указывает локальное имя. Начиная с Microsoft Office Visio 2003 электронная таблица shapesheet отображает только универсальные имена в формулах и значениях ячеек. (В предыдущих версиях универсальные имена не отображались в пользовательском интерфейсе.)

Как разработчик, вы можете использовать универсальные имена в программе, если вы не хотите изменять имя каждый раз, когда решение локализуется. Используйте метод GetFormulas для получения нескольких формул при использовании локального синтаксиса. Используйте метод GetFormulasU , чтобы получить несколько формул при использовании универсального синтаксиса.

Пример

В следующем макросе показано, как использовать метод GetFormulas . Предполагается, что есть активная страница Microsoft Visio, на ней есть по крайней мере три фигуры. Он использует GetFormulas для получения ширины фигуры 1, высоты фигуры 2 и угла фигуры 3.

В этом примере используется метод GetFormulas объекта Page для получения трех формул ячеек. Входной массив имеет четыре слота для каждой ячейки, как и для объектов Master . Для объектов Shape или Style для каждой ячейки (раздел, строка и ячейка) потребуется только три слота.

 
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

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.