Работа с листами

Материал из Forumooo wiki

Перейти к: навигация, поиск


Для работы с листами нам понадобятся следующие методы:

МетодОписание
copyByName( srcName, destName, index )Копирует лист, имеющий имя srcNam по указанному индексу и называет его destName.
createEnumeration()Создает объект, который выполняет перебор листов электронной таблицы.
getByIndex(index)Получает лист электронной таблицы на основе индекса листа.
getByName(name)Получает лист электронной таблицы на основе имени листа.
getCount()Возвращает число листов в виде длинного целого числа.
hasByName(name)Возвращает True если имя листа электронной таблицы существует.
hasElements()Возвращает True если документ содержит по крайней мере один лист электронной таблицы.
insertNewByName(name, index)Создает новый лист электронной таблицы и вставляет его в указанное место с указанным именем.
moveByName(name, index)Перемещает заданный именем лист электронной таблицы по указанному индексу.
removeByName(name)Удаляет заданный именем лист электронной таблицы.

Макрос для демонстрации работы с листами:

Sub AccessSheets
Dim oSheets		'Объект Sheets, который содержит все листы
Dim oSheet		'Отдельный лист
Dim oSheetEnum		'Для доступа перебором
Dim s As String		'Строковая переменная для хранения временных данных
Dim i As Integer	'Индексная переменная
 
oSheets=ThisComponent.Sheets
'Проверяем, что лист по имени "Лист4" существует
If NOT oSheets.hasbyName("Лист4") Then
'Если "Лист4" не существует, то вставим его как второй лист.
oSheets.insertNewByName("Лист4", 1)
End If
'Создадим новый лист по имени "Первый" в самом начале
oSheets.insertNewByName("Первый", 0)
'Скопируем "Лист4" в конец. Это - копирование, а не перемещение!
oSheets.copyByName("Лист4", "Копия", oSheets.getCount())
'Переместим "Копия" в самое начало
oSheets.moveByName("Копия",0)
'Листы пронумерованы начиная с нуля, но getCount() показывает точно, сколько там листов.
For i=0 To oSheets.getCount()-1
s=s & "Лист " & i & " = " & oSheets.getByIndex(i).Name & chr(10)
Next
 
Msgbox s, 0, "После вставки новых листов"
'Теперь удалим листы "Первый" и "Копия"
oSheets.removeByName("Первый")
oSheets.removeByName("Копия")
s=""
i=0
'Переберём оставшиеся листы с помощью Энумератора
oSheetEnum=oSheets.createEnumeration()
Do While oSheetEnum.hasMoreElements()
oSheet=oSheetEnum.nextElement()
s=s & "Лист " & i & " = " & oSheet.Name & chr(10)
i=i+1
Loop
Msgbox s, 0, "После удаления новых листов"
End Sub
Личные инструменты
Пространства имён
Варианты
Действия
Компоненты
Общие вопросы
Совместимость
Навигация
Инструменты