Метод Page.GetFormulasU (Visio)

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

Синтаксис

выражение. GetFormulasU( _SID_SRCStream()_ , _formulaArray()_ )

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

Параметры

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

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

Отсутствует

Примечания

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

Используйте метод GetFormulasU для получения формул в универсальном синтаксисе любого набора ячеек в любом наборе фигур страницы или образца.

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

{sheetID, sectionIdx, rowIdx, cellIdx}n

где sheetID — это свойство ID объекта Shape на странице или главном элементе, формула ячейки которого требуется.

Примечание.

Если sheetID в записи имеет значение visInvalShapeID (-1) или если нижний байт sectionIdxvisSectionInval (255), запись будет игнорироваться и в соответствующей записи массива результатов будет возвращен пустой вариант. Причина этого заключается в том, что один и тот же массив SID_SRCStream() можно использовать для нескольких вызовов GetFormulasU, SetFormulas и аналогичных методов, при этом вызывающему объекту необходимо только внести незначительные изменения в поток между вызовами.

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

Примечание.

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

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

Пример

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

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

 
Public Sub GetFormulasU_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.GetFormulasU 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 и обратная связь.