Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2а VB Лекція. Обєкти і класи.doc
Скачиваний:
1
Добавлен:
08.09.2019
Размер:
208.9 Кб
Скачать

Ієрархія об'єктів

Об'єктна модель Ехсеl організована у вигляді ієрархічної структури. Верхнім вузлом в цій ієрархії є об'єкт Application, що представляє власне додаток Excel.

Всі інші об'єкти моделі є дочірніми по відношенню до Application. Сам об'єкт Application завжди доступний для додатків, призначених для користувача.

Об'єкт Workbook має декілька безпосередніх нащадків, найбільш важливий з них - колекція Workbooks. Елементами цієї колекції є всі відкриті робочі книги. Кожен об'єкт класу Workbook має свою колекцію Sheets, що містить по одному об'єкту Sheet для кожного робочого листа і листа діаграм даної робочої книги.

Зрозуміло, структура об'єктної моделі Ехсеl включає і інші об'єкти і колекції.

Об'єкт Workbook

Кожна відкрита в Ехсеl робоча книга представлена об'єктом Workbook, що належить до колекції Workbooks об'єкту Application.

Розглянемо методи роботи з об'єктом Workbook.

Щоб створити нову робочу книгу, викличте метод Аdd колекції Workbooks:

Workbooks.Add(Аргумент)

Оскільки колекція Workbooks є нащадком об'єкту Application, повний синтаксис приведеного вище виразу наступний:

Application.Workbooks.Add(Аргумент)

Якщо ви програмуєте в Excel об'єкт Application завжди доступний у вигляді неявного посилання, тому указувати його явно не обов'язково.

Template(аргумент) - це необов'язковий аргумент, що є назвою файлу вже існуючої робочої книги (даний файл зберігається на диску). Якщо цей аргумент вказаний, то нова робоча книга створюється на основі тієї, що існує. Інакше нова книга міститиме три порожніх робочих листа. Метод повертає посилання на нову робочу книгу. В даному випадку ви маєте можливість вибору: або відразу її використовувати, або проігнорувати. Наприклад:

Dim MyWB As Workbook

Set MyWB =Workbooks.Add

Як завжди, використання ключового слова Set обов'язково, якщо змінній привласнюється значення посилання на об'єкт. Змінна MyWB посилається на тільки що створену робочу книгу, і тепер її можна використовувати для звернення до даної книги. Крім того, посилання на цю книгу поміщається також в колекцію Workbooks.

Якщо потрібно відкрити вже існуючу робочу книгу (файл якої збережений на диску), використовуйте метод Ореn:

Workbooks.Open (Fileпame)

Аргумент Fileпame - це назва файлу робочої книги, яку слід відкрити (з вказівкою повного шляху, якщо існує така необхідність). Цей метод відкриває існуючу робочу книгу, поміщає посилання на неї в колекцію Workbooks і повертає це посилання як результат. Наприклад:

Dim MyWB as Workbook

Set MyWB:= WоrkBооkS.Ореn("с:\ отчеты\ продажи.хls")

Якщо вказаний файл не існує або не може бути відкритий з якої-небудь причини (наприклад, якщо цей файл вже відкритий іншим додатком), виникає помилка виконання програми.

Збереження і закриття робочих книг

Щоб зберегти робочу книгу з використанням її поточної назви, викличте метод Save. Поточною є назва, привласнена робочій книзі в результаті виклику методу SaveAs чи ж стандартна назва (Книгаl, Книга2 і т.д.), привласнена їй у момент створення. Метод Save не має аргументів.

Щоб зберегти робочу книгу з новою назвою, використовуйте метод SaveAs:

WB.SaveAs (Filename)

- це посилання на робочу книгу, що зберігається, а Filename - це назва файлу в якому дана робоча книга повинна бути збережена. Якщо в назві файлу не вказано розширення . XLS, то його буде додано автоматично.

Назва файлу може бути дана з вказівкою повного шляху, якщо робочу книгу необхідно зберігати не в тій папці, яка застосовується за умовчанням. Наприклад:

МояКнига. SaveAs ("g: \ отчеты\ продажи\ березень. xls")

Метод SaveAs має також декілька необов'язкових аргументів, використовуваних для призначення робочій книзі пароля, визначення режиму резервного копіювання і інших параметрів збереження. Повний список аргументів методу SaveAs приведений в довідковій системі VBA .

Метод SaveCopyAs дозволяє зберегти робочу книгу у файлі з іншим ім'ям, не змінюючи назви самої робочої книги:

WВ.SаvеСоруАs(Filеnаmе)

Закриття робочої книги здійснюється шляхом виклику методу Close:

.Close (SaveChanges, Filename, RouteWorkbook)

Далі буде представлений опис аргументів методу Close:

  • SaveChanges. Якщо даному аргументу передається значення True, зміни, внесені після останнього збереження, будуть збережені, якщо ж False, - ні. У тому випадку, коли значення аргументу не вказане, користувач повинен буде підтвердити своє бажання зберегти зміни.

  • Filename. Даний аргумент визначає назву файлу, в якому буде збережена робоча книга. Якщо значення аргументу не вказане, книга зберігається з своєю колишньою назвою. Якщо робочій книзі не привласнюють назву, відмінну від стандартного (Книгаl, Книга2 і т.д.) і при виклику методу цьому аргументу не привласнюється ніяке значення, користувачу буде запропоновано вказати назву книги, що зберігається.

  • RouteWorkbook. Цей аргумент має значення тільки в тому випадку, якщо передбачена розсилка даної робочої книги, яка раніше не виконувалася. Якщо аргументу передається значення True, розсилка виконується, якщо значення False - ні. Якщо розсилка передбачена, але значення аргументу не вказане, в запиті користувач повинен вказати необхідність виконання розсилки.

Приклад використання конструкції For Next In для закриття всіх відкритих робочих книг (при цьому зберігаються всі внесені зміни):

Dim WB As Workbook

For Each WB in Workbooks ·

WB.Close SaveChanges:=True

Next WB

Посилання на робочі книги

Щоб управляти робочою книгою в кодах програми, необхідно мати посилання на цю книгу. Існує декілька способів отримання таких посилань, і залежить від конкретної ситуації.

Перший спосіб полягає в наступному: ви повинні одержати посилання у момент створення або відкриття робочої книги шляхом виклику методів Add і Ореn відповідно:

Dim НоваяWВ As Workbook

Dim ОткрытаяWВ as Workbook

Set НоваяWВ = Workbooks.Add

Set ОткрытаяWВ = Workbook.Ореn("затраты.хls")

Зверніть увагу, що змінні, яким привласнюються значення посилань на робочі книги, повинні бути оголошені з використанням відповідного типа даних.

Якщо робоча книга вже створена або відкрита (іншими словами, якщо вона вже належить колекції Workbooks), ви можете звертатися до неї безпосередньо через цю колекцію. Наприклад, вираз

Workbooks (Name)

повертає посилання на робочу книгу з назвою Name. Назва повинна бути вказана з урахуванням розширення .xls (наприклад итоги.хls, а не просто підсумки). Якщо робочої книги з такою назвою не існує, виникне помилка выдалнения програми.

Нарешті, в мові VВА передбачено два ключові слова, що використовуються для звернення до робочих книг:

  • ActiveWorkbook - для звернення до активної робочої книги;

  • ThisWorkbook - для звернення до робочої книги, в якій виконується код програми.

Активною вважається та робоча книга, яка активна на екрані. Як не важко здогадатися, ключове слово ActiveWorkbook може виявитися дуже зручним інструментом.

Необхідність у використанні ключового слова ThisWorkbook не така очевидна. В більшості випадків код, що виконується зараз, розташований в тій же робочій книзі, що і дані, з якими він працює, а тому у використанні слова ThisWorkbook немає необхідності. Але в деяких ситуаціях код, розташований в одній робочій книзі, звертається до даних, що зберігаються в іншій книзі. В цьому випадку, при зверненні до "своєї" робочої книги, необхідно використовувати слово ThisWorkbook. Найчастіше подібна ситуація виникає при створенні надбудов; при цьому використання ключового слова ThisWorkbook гарантує, що посилання указує не на активну робочу книгу, а на ту книгу, в якій збережені коди програми.