Метод Page.GetFormulas (Visio)
Возвращает формулы многих ячеек.
Синтаксис
выражение. GetFormulas
( _SID_SRCStream()_
, _formulaArray()_
)
Выражение Переменная, представляющая объект Page .
Параметры
Имя | Обязательный или необязательный | Тип данных | Описание |
---|---|---|---|
SID_SRCStream() | Обязательный | Integer | Поток, определяющий запрашиваемые ячейки. |
formulaArray() | Обязательный | Variant | Параметр Out. Массив, получающий формулы запрашиваемых ячеек. |
Возвращаемое значение
Отсутствует
Примечания
Метод GetFormulas похож на свойство Formula объекта Cell , за исключением того, что его можно использовать для получения формул нескольких ячеек одновременно, а не одной ячейки за раз. Метод GetFormulas является специализацией метода GetResults , который можно использовать для получения формул ячеек или результатов. Настройка вызова метода GetFormulas требует немного меньше работы, чем настройка метода GetResults .
Для объектов Page можно использовать метод GetFormulas , чтобы получить формулы любого набора ячеек в любом наборе фигур страницы или образца.
SID_SRCStream() — это массив из 2-байтовых целых чисел. Для объектов PageSID_SRCStream() должен быть одномерным массивом из 4 n 2-байтовых целых чисел для n>= 1. Метод GetFormulas интерпретирует SID_SRCStream() как:
{sheetID, sectionIdx, rowIdx, cellIdx}n
где sheetID — это свойство ID объекта Shape на странице или главном элементе, формула ячейки которого требуется.
Примечание.
Если sheetID в записи имеет значение visInvalShapeID (-1) или если нижний байт sectionIdx — visSectionInval (255), запись будет игнорироваться и в соответствующей записи массива результатов будет возвращен пустой вариант. Это связано с тем, что один и тот же массив SID_SRCStream() можно использовать для нескольких вызовов GetFormulas, SetFormulas и аналогичных методов, при этом вызывающему объекту требуется только внести незначительные изменения в поток между вызовами.
Если метод GetFormulas завершается успешно, функция formulaArray() возвращает одномерный массив из n вариантов, индексируемых от 0 до n - 1. Каждый вариант возвращает формулу в виде строки. formulaArray() — это параметр out, выделенный методом GetFormulas , который передает владение вызывающей стороне. В конечном итоге вызывающий объект должен выполнить процедуру SafeArrayDe в возвращаемом массиве. Обратите внимание, что процедура SafeArrayDeties имеет побочный эффект очистки вариантов, на которые ссылаются записи массива, что позволяет освободить все строки, возвращаемые методом GetFormulas . (Microsoft Visual Basic и Microsoft 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 и обратная связь.