Використання VBA

СОДЕРЖАНИЕ: Ласкаво просимо в Visual Basic for Applications Протягом багатьох років глава корпорації Microsoft Білл Гейтс (Bill Gates) висловлював думку об BASIC як про найбільш просту мову високого рівня для всіх типів прикладних програм. Ця точка зору привела в кінцевому результаті до появи Visual Basic for Applications.

Ласкаво просимо в Visual Basic for Applications

Протягом багатьох років глава корпорації Microsoft Білл Гейтс (Bill Gates) висловлював думку об BASIC як про найбільш просту мову високого рівня для всіх типів прикладних програм. Ця точка зору привела в кінцевому результаті до появи Visual Basic for Applications. Уперше використавши Visual Basic for Applications в Excel і Project, фахівці корпорації Microsoft потім застосували його у всіх своїх найбільш популярних пакетах, включаючи Word, Mail і PowerPoint.

Перша частина цієї книги знайомить з Visual Basic for Applications і його звязками з Excel, подальші частини з особливостями мови і програмуванням на Visual Basic.

Що таке Visual Basic for Applications?

Visual Basic for Applications є-новітнім втіленням Microsoft Visual Basic 3.0 для Windows. Фахівці корпорації Microsoft перенесли Forms Designer з Visual Basic, звязали Visual Basic з Excel, а потім додали діалогові таблиці замість Forms Designer. Додатково вони зробили всі команди і обєкти Excel (елемента, таблиці і т.п^ доступними для Visual Basic, що дозволило Visual Basic управляти всіма функціями Excel. Таким чином, в цей час Visual Basic є супермакромовою для Excel, що базується на добре відомих командах і синтаксисі BASIC.

Доповнюючи Excel, Visual Basic є також макромовою для Project, а незабаром стане і макромовою для Word, Mail і PowerPoint. Якщо ви намучилися з різними мовами і операційними системами, то можете зітхнути вільно. Більшість з випущених в останні роки основних прикладних пакетів були реалізовані зі своїми власними макромовами, і всі ці макромови відрізнялися один від одного і від всіх відомих мов програмування. Створення корпорацією Microsoft універсальної макромови значною мірою позбавляє від головного болю, повязаного з розробкою призначених для користувача команд і процедур.

Той, хто добре знайомий з старішими версіями BASIC, такими як BAS1CA і GW-BASIC, може передбачити, що Visual Basic це примітивна мова програмування, що не має сучасних конструкцій і структур даних. Однак це не так. Хоч в Visual Basic дотримуються синтаксис і правила програмування на BASIC і виконуються програми, написані на BASICA і GW-BASIC, Visual Basic є сучасною мовою програмування, повністю оснащеною всіма необхідними структурними операторами і типами даних. Крім того, в Visual Basic застосовуються обєкти, що робить його використання при розробці прикладних програм бо.чсг зрозумілим і легким. І хоч рівень обєктно-орієнтованого програмування на Visual Basic не так високий, як на З++, Visual Basic управляє Excel, маніпулюючи Excеl-обєктами. Використовуючи Visual Basic, не можна створювати нові класи обєктів, але можна впритул наблизитися до рішення цієї задачі.

Що можна зробити на Visual Basic for Applications?

Visual Basic не тільки полегшить створення макропроцедур, але і спільно з OLE 2.0 дозволить створювати мегапрограми”, обєднуючі і координуючі зусилля багатьох могутніх прикладних програм. Наприклад, можна створити програму підготовки документа, яка буде використати Excel для доступу до бази даних, генерації графіків і таблиць, Word для включення цих графіків і таблиць в текст звіту, Mail для розсилки звіту, і все це натисненням однієї кнопки. Visual Basic буде клеєм, який все обєднає і упорядкує. Оскільки вказані програми є обєктно-орієнтованими, будь-яка програма на Visual Basic буде мати доступ до всіх команд і даних в них за рахунок доступу до обєктів цих програм.

Що таке обєкти?

Що являють собою обєкти в компютерному коді? Відомо, що таке фізичний обєкт. Ваш маніпулятор миша, клавіатура і компютер такі ж фізичні обєкти, як і ваша чашка кави. Як же всередині вашого компютера код перетворюється в обєкт?

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

· що перевіряються

· що модернізуються

· що повторно використовуються

· переносимими

Програми повинні бути такими, що перевіряються, щоб ви могли пересвідчитися, що вони роблять саме те, що повинні робити. Програми повинні бути такими, що модернізуються, щоб ви або будь-хто інший могли зрозуміти програму досить добре, щоб внести коректні зміни. Програми повинні бути повторно такими, що використовуються, щоб ви, лише одного разу написавши процедуру, потім могли повторно використати її при будь-якій необхідності. І, нарешті, програми повинні бути переносимими, щоб перенести їх на різні платформи з мінімальними переробками.

Сучасна практика програмування шукає досягнення цих цілей в модульності компютерних програм. Модульні компютерні програми при розробці розбиваються на окремі частини, що іменуються модулями. Кожний модуль виконує специфічні, суворо певні функції перетворення і має доступ тільки до тих даних, які необхідні для даного перетворення. Код модуля, розроблений зі суворо певним інтерфейсом для інших модулів програми, дуже легкий для відладки, супроводу і розуміння. Іншим аспектом модульності є його замкненість, що додає упевненість в тому, що будь-які зміни, які ви вносите в код модуля, вплинуть тільки на функції цього модуля і ні на що інше. Таким чином, ці особливості полегшують відладку, супровід і розуміння коду.

Обєктно-орієнтоване програмування максимально використовує принцип модульності. Програмний обєкт в ООП називається контейнером. Контейнер включає в себе дані і код, який знає, як маніпулювати цими даними. Іншими словами, програмний обєкт це просто блок, що складається з коду і даних. Він може бути представлений як реальний фізичний обєкт, наприклад у вигляді командної кнопки. Програмний обєкт володіє специфічною функцією перетворення і містить весь необхідний код і всі необхідні дані для реалізації цієї функції, але його внутрішня робота прихована від стороннього ока.

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

У обєктно-орієнтованому програмуванні дані і код, який маніпулює цими даними, обєднані в структурі, званій обєкт. Замість того, щоб передавати дані від модуля до модуля для виконання різних обчислень, ви посилаєте повідомлення обєкту, що містить ці дані, і таким чином доручаєте йому виробити обчислення. Передати обєкту погані дані неможливо, бо дані, з якими обєкт маніпулює, включені в цей обєкт. Більш того не можна викликати або виконати обєкт можна тільки послати йому повідомлення з ввічливим проханням виконати одну із задач, що вирішуються ним (звичайно, якщо обєкт не знайде можливості здійснити необхідну маніпуляцію, то, швидше усього, йому доведеться ввічливо повідомити вам, що він не може задовольнити ваш запит)

Загальні приклади обєктів Visual Basic і Excel це таблиці, області осередків, командні кнопки, текстові вікна, робочі папки, діаграми і модулі.

Властивості і методи

Програмний обєкт володіє певними властивостями і методами. Властивості це видимі характеристики обєкта, а методи операції перетворення цих даних. Видимими характеристиками називаються дані, які можуть бути доступні поза обєктом. Властивостями вважаються дані, якими обєкт маніпулює АБО які дозволяють контролювати, як обєкт виглядає або як він себе веде. Наприклад, властивість Value текстового вікна це текст, який вводиться в це вікно. Властивість шрифту Color управляє тим, як він виглядає, а властивість елемента меню Enabled управляє доступністю вибору цього елемента.

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

Power.Value

Якщо продовжити цю конструкцію знаком рівності (=) н числом, то обєкт змінить значення вказаної властивості. Щоб набути значення цієї властивості, вмістіть цю конструкцію праворуч від знаку рівності.

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

Розглянемо як приклад обєкта кнопку включення живлення на моніторі вашого компютера (може бути у вас замість кнопки вимикач, але в цьому випадку це не має значення і можна уявити собі, що це кнопка). Коли ви натискаєте цю кнопку, внутрішній механічний зєднувач проводить включення, приєднуючи вхід до виходу. Також абсолютно не важливо, який вигляд вимикача використаний В вашому моніторі (відомо, що існує велика кількість різних видів вимикачів). І те, як працює ваш вимикач, і його пристрій вас не повинні цікавити (пластикова оболонка вимикача оберігає його від вашої цікавості). Важливе лише те, чи сполучені вхід і вихід перемикача н залежності від стану кнопки.

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

Натискаючи на кнопку за допомогою покажчика миші, ви змінюєте значення властивості Value з Включений на Вимкнений або навпаки. Крім того змінюється зовнішній вигляд кнопки, імітуючи таким чином натиснення.,

Саме натиснення на кнопку нічого не включає (рівно як і натиснення вимикача монітора). Вимикач на вашому моніторі сполучений шнуром з джерелом живлення. Механічний перемикач просто зєднує вхід і вихід. Програмна кнопка робить те ж саме. Вона не встановлює ваш віртуальний монітор в стан Включений або Вимкнений, а лише змінює властивість Value на Включений або Вимкнений. Інші обєкти, наприклад обєкт Віртуальний екран, повинні перевірити стан вказаної властивості, щоб визначити, включатися чи ні.

Успадкування

Точно так само, як обєкт-вимикач є частиною обєкта-монітора, програмний обєкт може бути частиною іншого, більшого програмного обєкта. Коли обєкти обєднані, виявляються спеціальні властивості, відомі під назвою успадкування. Коли один обєкт є частиною іншого обєкта, він успадковує всі властивості і методи попереднього, замість дозволяючи доступ до своїх властивостей і методів. Цей принцип властивий і механічному перемикачу (будучи частиною монітора, він за допомогою натиснення кнопки передає монітору по спадщині свою властивість Включений /Вь1ключеи і метод зміни цієї властивості).

Для доступу до властивостей і методів обєкта, що є складовою частиною інших, більш великих обєктів, треба визначити кожний із збірних обєктів починаючи з самого крайнього контейнера, а потім поставити точку і указати наступний (внутрішній) складовий обєкт. Потім знову точка і наступний внутрішній обєкт, і так доти, поки не дійдете до обєкта, до властивостей або методів якого ви намагаєтеся добратися. Таким чином, вийшов список обєктів, вказаних зліва направо в наступному порядку: від самого крайнього (головного) і аж до цікавлячого обєкта. Завершують цю конструкцію точка і імя властивості або методу, до якого ви хочете отримати доступ. Наприклад, обєкт-монітор, що іменується MyMonitor, включає обєкт-кнопку Power, отже, MyMonitor успадковує властивість Value обєкта Power. Для доступу до властивості Value використовується наступна конструкція:

MyMonitor.Power.Value

Якщо MyMonitor міститься в обєкті MyHouse, ваш доступ може бути оформлений наступною конструкцією:

MyHouse.MyMonitor.Power.Value

І так можна продовжувати для кожного включеного обєкта. Обєкт MyHouse тепер успадкував можливості кнопки.

Класи

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

Пошук обєктів

Пошук обєктів в Visual Basic часто не просте заняття, оскільки програми ца Visual Basic можуть обєднуватися з декількома прикладними програмами, кожна з яких має власну бібліотеку обєктів.

Інтерактивна допомога

Використання інтерактивної підказки навряд чи не самий легкий спосіб виявити обєкт. Вікно Help не тільки містить перелік обєктів, але і розкаже вам, що вони собою представляють і як їх використати. Інтерактивна підказка викликається, як і будь-яка прикладна програма під Windows, отже ви можете відкрити декілька файлів Help одночасно. Додатково, коли відображається тема, що підказується, натисненням командної кнопки On Top ви можете зберегти вікно Help у верхній частині вашої таблиці, щоб потім читати його в процесі роботи.

Для доступу до інтерактивної підказки Excel задайте директиву Help/Contents. Зявиться вікно Help, в якому Visual Basic відведений окремий розділ Programming with Visual Basic. Щоб ознайомитися з вмістом цього розділу (мал. 2.1), укажіть Programming with Visual Basic. Перелік обєктів Excel, доступних в Visual Basic, приведений в підрозділі Programming Language Summary.

Доступ до обєктів Excel з Visual Basic

Excel фірми Microsoft є бібліотекою обєктів, які знаходяться всередині Врікладних програм Excel. Як ви і передбачаєте, обєктами Excel є таблиці, робочі папки, діаграми і області осередків. Бібліотеки функцій таблиць Ekcel, меню і піктографічне меню також є обєктами. Visual Basic for Applications являє собою метод, що модифікує операції Excel.

Використання наборів обєктів

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

Sheets Всі сторінки будь-яких типів в робочій папці

Workbooks Все поточні відкриті робочі папки

Worksheets Всі таблиці в робочій папці

Charts Всі сторінки діаграм в робочій книзі

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

Workbooks( Sales).Worksheets(2)

Workbooks( Seles).Worksheets( West)

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

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

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

Для доступу до компонентів набору дуже зручно використати оператор For Each мови Visual Basic. Оператор For Each повторює блок операторів для кожного компонента набору.

Що таке типи даних?

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

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

Скачать архив с текстом документа