Міністерство вищої та середньої освіти Російської Федерації p>
Іркутський Державний Технічний університет p>
Факультет Технології та комп'ютеризації Машинобудування p>
Кафедра Технології Машинобудування p>
Курсова робота з інформатиці на тему
«Розробка додатків на мові VBA в середовищі MS EXCEL з обробки даних для заданих об'єктів» p>
Виконали студенти групи ІСМ-03-1 p>
Козулін С.П, Кононов І.В. p>
Перевірив: Буренков С. І_____________ p>
Іркутськ, 2004 p>
План p>
1. Як все починалося p>
- QuickBasic проти TurboBasic p>
-Епоха Visual Basic p>
-Visual Basic for Applications p>
2. Обробка модулів VBA p>
-Перейменування, Видалення, Створення, Додавання, Експорт, Імпорт модулівпроекту p>
- Імпорт та експорт модуля з проекту в проект p>
- Імпорт модуля через експортований файл (а також модулів звичайного VB) p>
- Редакція модуля p>
- Обробка модулів VBA програмно p>
- Експорт модуля проекту в файл p>
- Імпорт модуля проекту з файлу p>
- Імпорт модуля через організатор (даний код тільки для програми Word) p>
- Вставка нових рядків у модуль проекту p>
- Видалення рядків з модуля p>
- Читання рядків з модуля p>
- Визначення кількості рядків у модулі p>
- Перейменування модулів проекту p>
- Видалення модулів проекту p>
- Визначення кількості модулів у проекті p>
- Створення нового модуля проекту p>
3. Постановка задачі та її рішення p>
4. Список використаної літератури p>
Як все починалося p>
Мова Basic був розроблений професорами Дартмутського коледжу Дж.Кемені і
Т. Курц в 1965 році як засіб навчання і роботи непрофесійнихпрограмістів. (Дартмутський коледж в штаті Нью-Гампшір, США, був створений усередині 18 століття, це одна з найстарший вищих закладів Америки). Йогопризначення визначено в самій назві, що є абревіатурою слів
Beginner's All-purpose Symbolic Instruction Code (багатоцільовий мовусимволічних інструкцій для початківців) і при цьому в дослівному перекладіозначає "базовий".
Примітка. Раніше мови програмування писалися обов'язково малимибуквами - BASIC, FORTRAN. У 1990 році Міжнародна організація стандартівприйняла рішення, що вони пишуться як звичайні власні імена - рядковоїє тільки перша буква.
Однак парадокс полягає в тому, що, будучи дійсно досить простимзасобом програмування, абсолютно непридатним в ті часи для вирішеннясерйозних завдань, Basic представляв собою якісно нову технологіюстворення програм в режимі інтерактивного діалогу між розробником ікомп'ютером. Тобто являв собою прообраз сучасних системпрограмування. Інша справа, що рішення такого завдання на техніці тихроків було можливо тільки за рахунок максимального спрощення мовипрограмування та використання транслятора типу "інтерпретатор".
У силу цих же причин Basic в основному застосовувався на міні - і мікроЕОМ,які у 70-ті роки мали оперативну пам'ять, обсяг якої здається сьогодніпросто нереальним (4-32 тисяч байт). Різке розвиток систем на основі Basicпочалося з появою на початку 80-х років персональних комп'ютерів,продуктивність і популярність яких росте ось вже двадцять роківнебаченими темпами. p>
QuickBasic проти TurboBasic p>
Наприкінці 80-х років налічувалося близько десятка систем Basic різних фірм -розробників. Однак головна боротьба точилася між QuickBasic (компанія
Microsoft) і TurboBasic (Borland). Взагалі-то, конкуренція між цими двомарозробниками засобів програмування йшла по цілому спектру мов -
Basic, Pascal та C. І результатом її в 1989 році стало неявне світовеугоду, коли Microsoft відмовилася від подальшої підтримки Pascal, а
Borland - Basic.
Тоді багато коментаторів уїдливо зауважували, що Microsoft відмовилася від
Pascal на користь Basic виключно з-за особистих пристрастей засновника ікерівника корпорації Білла Гейтса. Звичайно, розробка в 1975 роціінтерпретатора Basic для мікроЕОМ Altair 8800 була першим проектомдвадцятилітніх Білла Гейтса та Пола Аллена, тільки що заснували фірму
Micro-Soft (на той момент вони були єдиними співробітниками новоїкомпанії). Після цього саме Пол Ален займався створенням Basic-систем івважається хресним батьком Visual Basic. У свою чергу Білл Гейтс,перераховуючи свої титули, досить часто додає "Basic-програміст".
Однак, як мені видається, перемога QuickBasic визначалася сутотехнологічними причинами - в цій системі була вдало реалізована схемазмішаного використання традиційних Basic-технологій і класичнихметодів створення складних програмних систем. Відзначимо, що з 1990 рокускорочений варіант QuickBasic під назвою QBasic був включений до складу MS-
DOS. (Багато сучасних користувачі помилково думають, що QuickBasic і
QBasic - одне й те саме.) P>
Епоха Visual Basic p>
На початку 90-х років Microsoft почала активну боротьбу за просування в масисвоєї нової операційної системи Windows (проти своєї ж, але вжезастарілої MS-DOS). Але, як відомо, користувачі працюють не з ОС, а зпрограмами, які працюють в неї середовищі. Тому швидкість зміни платформив основному визначається темпами появи відповідних прикладнихпрограм.
Проте зміна операційних систем являє серйозну проблему і дляпрограмістів, так як їм треба було освоювати нову технологію розробкипрограм. У той момент існуючим (і в значній мірі, абсолютносправедливим) думкою було те, що Windows пред'являє вищівимоги до кваліфікації програміста.
У 1991 році під гаслом "тепер і починаючі програмісти можуть легкостворювати додатки для Windows "з'явилася перша версія новогоінструментального засобу Microsoft Visual Basic. У той момент Microsoftдосить скромно оцінювала можливості цієї системи, орієнтуючи її,перш за все, на категорію початківців і непрофесійних програмістів.
Основним завданням тоді було випустити на ринок простий і зручний інструментрозробки в тоді ще досить новому середовищі Windows, програмування вякої становило проблему і для досвідчених фахівців.
Дійсно, VB 1.0 в той момент був більше схожий не на робочийінструмент, а на діючий макет майбутньої середовища розробки. Йогопринципове нововведення полягало в реалізації ідей подієво -керованого і візуального програмування в середовищі Windows, які вельмирадикально відрізнялися від класичних схем розробки програм. За загальнимвизнання VB став родоначальником нового покоління інструментів, які називаютьсясьогодні засобами швидкої розробки програм (Rapid Application
Development, RAD). Сьогодні ця ідеологія вважає звичною, але тоді воназдавалася абсолютно незвичайної і створювала серйозні проблеми (в тому числічисто психологічного плану) для програмістів "старих часів".
Тим не менше, число VB-користувачів зростала, причому багато в чому за рахуноквеличезної популярності її попередника - QuickBasic. При цьому VB швидко
"мужнів", силкуючись за рахунок як розвитку середовища програмування, так івключення професійних елементів мови і проблемно-орієнтованихкоштів. І до моменту випуску в 1995 році VB 4.0 ця система була вжевизнаним і одним з найпоширеніших інструментів створення широкогокласу додатків. В даний час використовується версія VB 6.0, появаверсії 7.0 очікується на початку наступного року. p>
Visual Basic for Applications p>
На початку 90-х років намітилася чітка тенденція включення до програми,призначені для кінцевого користувача, кошти внутрішньогопрограмування, які повинні були вирішувати завдання настройки і адаптаціїцих пакетів для конкретних умов їх застосування.
В кінці 1993 р. Microsoft оголосила про намір створити на основі VB новууніверсальну систему програмування для прикладних програм, якаодержала назву Visual Basic for Applications (VB для додатків).
Природно, реалізацію цього проекту вона почала з власних офіснихпакетів.
Перший варіант VBA 1.0 з'явився у складі MS Office 4.0, але лише впрограмах Excel 4.0 і Project 6.0. В інших же додатках - Word 6.0 і
Access 2.0 - були власні варіанти Basic. Більш того, VBA 1.0 доситьсильно відрізнявся (причому маючи ряд істотних переваг) від використовуваноїтоді універсальної системи VB 3.0.
Якісний перелом настав у кінці 1996 року з випуском MS Office 97, вякому була реалізована єдина середовище програмування VBA 5.0, включенав програми Word, Excel і PowerPoint. Більш того, VBA 5.0 використовувала тойсамий мовний механізм і середовище розробки, що й універсальна система
VB 5.0. До складу випущеного рік тому MS Office 2000 увійшла відповідноверсія VBA 6.0, яка використовується в шести програмах - Word, Excel,
PowerPoint, Access, Outlook, Frontpage.
У результаті останні три роки Microsoft позиціонує сьогодні свій пакет
MS Office не просто як набір прикладних програм, а як комплекснуплатформу для створення бізнес-додатків, які вирішують широке колоспеціалізованих задач користувачів. Саме цим пояснюється появоюв його складі спеціального випуску для розробників додатків - Developer
Edition.
Одночасно, VBA активно просуває в якості галузевого стандарту дляуправління програмованими додатками, оголосивши про можливість йоголіцензування. Сьогодні вже більше ста провідних світових фірм-розробниківприкладних програм (серед них є про російські) придбали ліцензії нанього і включають VBA до складу своїх програмних продуктів.
Висновок зі сказаного вище. Освоєння механізму програмування VBA,реалізованого в офісному додатку, який встановлено на вашомукомп'ютері, відкриє вам можливість використання отриманих знань інавичок при роботі з десятками і сотнями інших програм, у тому числі ітих, яких поки що немає на світі. Почавши зі складання найпростішихмакрокоманд, при бажанні можна в рамках одного інструментарію статипрофесіоналом, які розробляють програмні системи будь-якої складності.
Десять років тому в усьому світі було не більше двох мільйонів програмістів.
Сьогодні їх налічується близько десяти мільйонів, з них не менше 70відсотків використовують як хоча б одне з інструментів VB або VBA. p>
Обробка модулів VBA p>
Проект - Файл програми Microsoft Office, в якому написана програма VBA p>
Додаток - Додаток Microsoft Office (Word, Excel, Access, Power Pointта ін) p>
Модуль - іменована область у файлі проекту містить в собі код,написаний на мові VBA p>
Вікно проекту - "дерево", що містить на собі всі "дерева" завантаженихпроектів, "дерево" складається з імен модулів. p>
Редактор VBA - редактор вбудований всередині програми, що дозволяє писати іредагувати програми на мові VBA. p>
Для переходу в редактор VBA можна скористатися пунктами меню: Сервіс-
Макроси-Редактор Visual Basic (Рис.1) (У Access вибрати закладку модулівабо форм, вибрати мишею потрібний об'єкт, зайти в меню: Вид-Програма) p>
Для відкриття вікна проекту, необхідно скористатися пунктами менюредактора VBA: Вид-Дерево проекту p>
Подвійним кліком миші по папці з іменами модулів можна відкрити її. p>
Подвійним кліком миші на ім'я модуля, можна активізувати вікно редакторапотрібного вам модуля. p>
p>
Рис 1 Редактор VBA (ліворуч дерево проекту, активізований редактор модуля 1, який видно в правій частині вікна VBA) p>
Примітка: У Access модулі можна обробляти, не заходячи в редактор VBA,вибравши закладку Модулі. У Access 1997 модулі обробляються тільки череззакладку Модулі, тому що вікна проекту в цій версії Access не існує. p>
Перейменування, Видалення, Створення, Додавання, Експорт, Імпорт модулівпроекту p>
Всі зазначені в заголовку дії можна виконати наступним чином: p>
1. У редакторі VBA натиснути праву клавішу миші на дереві проекту на імені потрібного нам модуля (або на будь-якому імені наявного модуля, для того, щоб створити новий модуль) p>
2. Вибрати відповідний пункт меню (для створення модуля вибрати пункти: Вставити-модуль) p>
Імпорт та експорт модуля з проекту в проект p>
Імпорт модуля через експортований файл (а також модулів звичайного VB) p>
Для пересилання модуля з проекту в проект можна скористатися наступнимприйомом: p>
1. Експортувати модуль з проекту в файл (в редакторі VBA натиснути праву клавішу миші на дереві проекту, на імені модуля, і вибрати пункт p>
"Експорт файлу") p>
2. Імпортувати модуль з файлу в проект (даний файл може бути не тільки експортним файлом з VBA програми, а й бути модулем звичайного VB)
У редакторі VBA натиснути праву клавішу миші на дереві проекту, на іменіфайлу, і вибрати пункт "Експорт файлу" p>
. p>
Редакція модуля p>
1. У редакторі VBA клацнути у вікні проекту два рази на ім'я потрібного нам модуля (див. рис 1) (У Access вибрати закладку Модулі та ім'я відповідного модуля, увійти в меню Вид-Програма .). p>
2. Перейти в активізувати вікно редактора модуля (праворуч від вікна проекту) та редагувати його. P>
3. З верхнього лівого списку, розташованого вгорі вікна редактора модуля, можна вибирати або розділ опису, або ім'я потрібної вам підпрограми (У модулі Форм, Листів Excel, Книжки Excel, Документа Word і т.п. з верхнього правого списку можна вибрати Загальну Область, або ім'я об'єкта (Ліста, книги, документи і т.п.), або ім'я елемента управління (який знаходиться на відповідні аркуші, Книзі, p>
Документі тощо), при вибраному об'єкті, з правого списку вибирається ім'я події, для того, щоб активізувати відповідну подієву процедуру об'єкта або елемента керування). p>
Обробка модулів VBA програмно p>
Під "ІмяПроекта" у програмній конструкції мається на увазі відповіднийоб'єкт. Для зв'язку з книгою Excel призначений об'єкт - Workbooks ( "Ім'якниги "), а для зв'язку з документом Word об'єкт - Documents (" Назва документа ").
Об'єкт для зв'язку з документом, який містить загальні макроси програми
Word, має ім'я: NormalTemplate, в додатку Excel даний об'єктзаписується наступним чином: Workbooks ( "PERSONAL "). p>
Експорт модуля проекту в файл p>
ІмяПроекта.VBProject.VBComponents.Item (" Ім'я модуля "). Export" Шлях і
Имяфайла " p>
Імпорт модуля проекту з файлу p>
ІмяПроекта.VBProject.VBComponents.Import" Шлях і имяфайла " p>
Імпорт модуля через організатор (даний код тільки для Word додатка) p>
Application.OrganizerCopy Source: = _ p>
"Шлях і ім'я проекту, звідки береться модуль", Destination: = _ p>
"Шлях і ім'я проекту куди імпортується модуль ", Name: =" Ім'я модуля ", Object
_ p>
: = wdOrganizerObjectProjectItems p>
Вставка нових рядків у модуль проекту p>
ІмяПроекта.VBProject.VBComponents.Item ( "Ім'я модуля"). CodeModule.InsertLines
№, S
Де p>
№ - Номер рядка в модулі, з якою будуть вставлятися нові рядки p>
S - вставляє рядок символів p>
Примітка: p>
В змінної S можуть міститися коди символів кінця рядків, які можнаотримати наступного функцією з наступним аргументом: CHR (13). Такимчином, мінлива S може містити в собі відразу кілька рядків: p>
S = "Перший рядок" + chr (13) + "Другий рядок" + chr (13) + "Третій рядок"
'і т.д. p>
Видалення рядків з модуля p>
ІмяПроекта .. VBProject.VBComponents.Item ( "Ім'ямодуля "). CodeModule.DeleteLines (№, Кількість)
Де p>
№ - Номер рядка в модулі з якою будуть видалятися рядка p>
Кількість - кількість видаляються строк p>
Читання рядків з модуля p>
ІмяПроекта . VBProject.VBComponents.Item ( "Ім'ямодуля "). CodeModule.Lines (№, Кількість)
Де p>
№ - Номер рядка, в модулі з якою будуть починатися читання рядків p>
Кількість - кількість читаються строк p>
Визначення кількості рядків у модулі p> < p> ІмяПроекта.VBProject.VBComponents.Item ( "Ім'ямодуля "). CodeModule.CountOfLines p>
Перейменування модулів проекту p>
ІмяПроекта.VBProject.VBComponents.Item (" ІмяМодуля "). Name =" Нова назвамодуля " p>
Видалення модулів проекту p>
ІмяПроекта.VBProject.VBComponents.Remove _ p>
ІмяПроекта.VBProject.VBComponents.Item (" ІмяМодуля ") p>
Визначення кількості модулів у проекті p>
ІмяПроекта.VBProject.VBComponents.Count p>
Створення нового модуля проекту p>
'Створюємо новий модуль макросів і підпрограм p >
ІмяПроекта.VBProject.VBComponents.Add vbext_ct_StdModule p>
'Визначаємо індекс створеного модуля p>
k = ІмяПроекта.VBProject.VBComponents.Count p>
' даємо своє ім'я модуля p>
ІмяПроекта.VBProject.VBComponents.Item (k). Name = "Нове ім'я модуля" p>
Постановка задачі та її рішення p>
Вид об'єкту - Числова прямокутна матриця.
Параметри об'єкту - Розмірності матриці
Вхідні форми - Введення елементів матриці зі стовпцем (Клавіатура, Файл, Тест -формула), Вибір виду обробки.
Види обробки - Побудова діаграм p>
1. Середні значення по рядках і стовпцях p>
2. Максимальні значення по рядках і стовпцях p>
3. Мінімальні значення по рядках і стовпцях p>
Option Explicit
Const m = 15
Dim i, j, k As Integer
Public Obr As Byte
Dim n, A (m, m), L (m) As Double
Public inp, NameF, Path As String
Dim Bukva As Variant
Dim det, s, x As Double
Public оголошує глобальну змінну. Оголошена таким способоммінлива стає доступною з усіх модулів і форм проекту. Якщомінлива оголошена в розділі глобальних оголошень, то доступ до неїздійснюється просто за її ім'ям. Якщо ж вона оголошена в коді форми, тодоступ до неї з інших форм і модулів здійснюється так: ІмяФорми.
ІмяПеременной. P>
Sub ButtonCancel_Click () p>
Sheet1.OptionButton1.Select p>
Cng_List (False)
End Sub
Sub оголошує процедуру з ім'ям name і параметрами arglist. P>
Public Sub Obrabotka ()
Obr = Sheet1.ListBox1.ListIndex + 1n = Sheet2.Range ( "R2")
If Obr> 0 Then p>
Select Case Obr p>
Case 1 'Середнє значення по рядках p>
Call rab1 (n) p>
Case 2 'середнє значення по стовпцях p>
Call rab2 (n) p>
Case 3' min по рядках p>
Call rab3 (n) p>
Case 4 'min по стовпцях p>
Call rab4 (n) p>
Case 5' max по рядках p>
Call rab5 (n) p>
Case 6 'max по стовпцях p>
Call rab6 (n) p>
End Select
End If
End Sub p>
Тут ми, відповідно, оголошуємо глобальну процедуру виду обробки. Уданому випадку це підрахунок середніх, максимальних і мінімальних елементівматриці по стовпцях і рядках
Call - Викликає процедуру або функцію. Оператор Call може бути опущений.
Далі ... p>
Sub ButtonOK_Click ()
If Sheet1.OptionButton1.Value = True Then
'Введення матриці з клавіатури в файл
Met1: inp = InputBox "Введіть розмірність матриці А", "Введення розмірності",
"testfile" - виводить вікно з запитом на введення значення. Параметри такі ж,як і у функції MsgBox. p>
n = Val (inp) - Перетворює рядок до числа p>
If (n> 0) And (n A (i, j) Then x = A (i, j) p>
End If p>
Next j p>
Sheet4.Cells (i + 4, 9) = x p>
Next i
End Sub
Sub rab4 (n As Variant) p>
Call getA p>
Sheet4.Activate p>
Call InitS p>
Sheet4.Range ( "H3") = "Min елементи по стовпцях" p>
Sheet4.Range ( "G4") = "Стовпець" p>
Sheet4.Range ( "I4") = "Min" p> < p> For j = 1 To nx = A (1, j) 'min p>
Sheet4.Cells (j + 4, 7) = j p>
For i = 2 To n
If x> A (i, j) Then x = A (i, j) p>
End If p>
Next i p>
Sheet4 . Cells (j + 4, 9) = x p>
Next j
End Sub
Sub rab5 (n As Variant) p>
Call getA p>
Sheet4.Activate p>
Call InitS p>
Sheet4.Range ( "H3") = "Max елементи по рядках" p>
Sheet4.Range ( "G4") = "Рядок" p>
Sheet4.Range ( "H4") = "Max" p> < p> For i = 1 To ns = A (i, 1) 'max p>
Sheet4.Cells (i + 4, 7) = i p>
For j = 2 To n
If s
End If p>
Next j p>
Sheet4.Cells (i + 4, 9) = s p>
Next i
End Sub p>
Sub rab6 (n As Variant) p>
Call getA p>
Sheet4.Activate p>
Call InitS p>
Sheet4.Range ( "H3") = "Max елементи постовпцях " p>
Sheet4.Range (" G4 ") =" Стовпець " p>
Sheet4.Range (" H4 ") =" Max " p>
For j = 1 To ns = A (1, j) 'max p>
Sheet4.Cells (j + 4, 7) = j p>
For i = 2 To n p>
If s
End If p>
Next i p>
Sheet4.Cells (j + 4, 9) = s p>
Next j
End Sub p>
Список використаної літератури p>
. О. Васильєв, А. Андрєєв. VBA в Office 2000. Навчальний курс. С-Пб.: P>
"Пітер", 2001 p>
. Білліг В.А. Засоби розробки VBA-програміста. Офісне програмування. Том 1. М.: Видавничо-торговий дім "Російська p>
Редакція", 2001. P>
. Білліг В.А. Світ об'єктів Excel 2000. М.: Видавничо-торговий дім p>
"Русская Редакция", 2001. P>
. В. І. Король. Visual Basic 6.0, Visual Basic for Applications 6.0. Мова програмування. Довідник з прикладами. М.: Видавництво КУДИЦ, p>
2000. P>
p>