Функция _ExcelSheetList

         Описание функции


_ExcelSheetList

Возвращает одномерный массив, содержащий количество и имена всех листов открытой рабочей книги Excel.

#include <Excel.au3>
_ExcelSheetList($oExcel)

Параметры

$oExcel Ссылка на COM-объект "Excel.Application" полученная ранее вызванными _ExcelBookOpen(), _ExcelBookNew(), или _ExcelBookAttach()

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

Успех:Возвращает одномерный массив, содержащий количество и имена всех листов открытой рабочей книги Excel.
Ошибка:Возвращает 0, Устанавливает значение флага ошибки @error:
@error:0 - Скрипт завершил работу без ошибок
1 - Ошибка OLE/COM ($oExcel), возможно указанный объект не существует

Примечания

Значению 0(нулевого)индекса возвращаемого массива соответствует количество листов в целевой рабочей книге, начиная с 1(первого) индекса и далее значения соответствуют именам листов, а сам индекс - их порядковому номеру в коллекции листов целевой рабочей книги.

Пример

; *****************************************
; Пример 1 - Получает массив содержащий имена и количество листов в коллекции целевой рабочей книги Excel и отображает его
;******************************************
#include <Excel.au3>
#include <Array.au3>

Local $oExcel = _ExcelBookNew() ; Создаем новую рабочую книгу

$aArray = _ExcelSheetList($oExcel)
_ArrayDisplay($aArray, "Массив возвращаемый методом _ExcelSheetList")

MsgBox(4096, "_ExcelSheetList | Пример 1", "Демонстрация завершена, нажмите ОК")
_ExcelBookSaveAs($oExcel, @TempDir & "\Temp.xls", "xls", 0, 1) ; Сохраняем файл в директории временных файлов, перезаписывая если необходимо.
_ExcelBookClose($oExcel) ; Закрываем рабочую книгу

; ******************************************
; Пример 2 - Получает массив содержащий имена и количество листов в коллекции целевой рабочей книги Excel, и основываясь на полученных данных
; перебирает в ней листы используя полученное имя листа в методе активации листа _ExcelSheetActivate
; ******************************************
#include <Excel.au3>

Local $oExcel = _ExcelBookNew() ; Создаем новую рабочую книгу

$aArray = _ExcelSheetList($oExcel)

For $i = $aArray[0] To 1 Step -1 ; Инструкции цикла с убывающим счетчиком
    _ExcelSheetActivate($oExcel, $aArray[$i]) ; Активируем лист основываясь на полученном имени
    MsgBox(4096, "Активный лист", "Сейчас активен лист:" & @CRLF & $aArray[$i])
Next

MsgBox(4096, "_ExcelSheetList | Пример 2", "Демонстрация завершена, нажмите ОК")
_ExcelBookSaveAs($oExcel, @TempDir & "\Temp.xls", "xls", 0, 1) ; Сохраняем файл в директории временных файлов, перезаписывая если необходимо.
_ExcelBookClose($oExcel) ; Закрываем рабочую книгу

; ***********************************************************************************************************************************************
; Пример 3 - Получает массив содержащий имена и количество листов в коллекции целевой рабочей книги Excel, и основываясь на полученных данных
; перебирает в ней листы используя соответствие индекса полученного массива порядковому номеру листа в методе активации листа _ExcelSheetActivate
; ***********************************************************************************************************************************************
#include <Excel.au3>

Local $oExcel = _ExcelBookNew() ; Создаем новую рабочую книгу

$aArray = _ExcelSheetList($oExcel)

For $i = $aArray[0] To 1 Step -1 ; Инструкции цикла с убывающим счетчиком
    _ExcelSheetActivate($oExcel, $i) ; Активируем лист основываясь соответствие индекса массива порядковому номеру листа в коллекции
    MsgBox(4096, "Активный лист", "Сейчас активен лист №:" & @CRLF & $i)
Next

MsgBox(4096, "_ExcelSheetList | Пример 3", "Демонстрация завершена, нажмите ОК")
_ExcelBookSaveAs($oExcel, @TempDir & "\Temp.xls", "xls", 0, 1) ; Сохраняем файл в директории временных файлов, перезаписывая если необходимо.
_ExcelBookClose($oExcel) ; Закрываем рабочую книгу