Комп'ютерна підготовка h2>
Курсова робота. p>
Виконав студент ТМЦДО гр.: з-472-27б спеціальності
061000 Маркелова А.А. p>
Томський державний університет систем управління
і радіоелектроніки (ТУСУР) p>
Кафедра автоматизації обробки інформації. p>
р. Абакан. P>
2005 p>
Написати
програму, яка формує базу «Телефонний довідник», що містить наступні
інформація: ПІБ, адреса, телефон. Перегляд бази та обробка повинна виконуватися в
програмі Excel. p>
Програма
повинна задовольняти наступним вимогам: p>
Додаток
виконати з використанням мови програмування VBA для MS Excel. p>
При
відкриття книги Excel,
містить проект, забезпечити один робочий аркуш, на якому оформити рекламну
заставку проекту і помістити елемент запуску проекту на виконання. p>
Проект
повинен забезпечувати наступні режими роботи: p>
введення
вихідних даних і формування бази; p>
коректування
даних (виправлення, додавання, видалення); p>
робота
з даними (пошук, сортування, перегляд); p>
формування
статистики: p>
загальне
кількість абонентів телефонної мережі; p>
кількість
телефонів на вказаній вулиці; p>
кількість
телефонів в зазначеному будинку. p>
Для
кожного режиму роботи визначити кнопку запуску і призначену для користувача форму. p>
На
екрані розмістити одну панель інструментів, що забезпечує роботу проекту.
Решта панелі приховати. P>
Дані
проекту зберігати у файлі. p>
При
введенні числових даних забезпечити обробку помилок некоректного введення. p>
Введення b>
p>
Мета
роботи: закріплення знань, отриманих при вивченні курсу «Комп'ютерна
підготовка ", а також придбання нових навичок створення завершених
програмних додатків для MS Excel. p>
В
доповнення до величезних можливостей MS Excel, що входить до складу Microsoft Office кваліфікованому користувачеві
доступний повноцінний мова програмування Visual Basic for Applications (VBA),
що дозволяє пожвавити сторінки електронних таблиць, перетворивши їх у складне Windows - додаток,
здійснює багатогранну обробку даних під управлінням оператора. При
цьому, більшість часто використовуваних операцій програмується заздалегідь, що
спрощує роботу кінцевого користувача і значно знижує ймовірність
виникнення помилки як на етапі введення вихідних даних, так і при їх
подальшої обробки. p>
В
даній роботі використовуються найбільш часто вживані елементи
проектування додатків для MS Excel.
У тому числі: процедури (підпрограми і функції), модулі і форми. У коді VBA застосовувалися різні
типи даних (включаючи певні користувачам опису типів), багаторівневі
умовні оператори та оператори циклів. Для реалізації збереження інформації під
зовнішньому файлі використані вбудовані функції роботи з файлами
(послідовний доступ). p>
Діалог
з користувачем реалізований за допомогою функцій введення/виводу інформації InputBox і MsgBox, а також ряду спеціально
створених форм. У зазначених формах застосовані елементи керування типу: напис,
поле, рамка, перемикач, кнопка. p>
Оскільки
програмування на VBA
побудовано на основі подієвої моделі, то і в даній роботі обробка подій
є основою для виконання тих чи інших дій, спрямованих на вирішення
конкретних завдань. p>
MS Excel має багату об'єктну
модель. При вирішенні поставленого завдання використовувалися об'єкти наступних типів:
Application, Workbook, Worksheet, Range, CommandBar, а також колекції Workbooks і Worksheets. P>
Робота
виконана в середовищі Microsoft Excel
2002. P>
Структура програмного
комплексу b>
p>
Склад програмного комплексу
p>
Програмний
комплекс «Телефонний довідник» складається з двох файлів, які розташовуються у
каталозі "c: tmp": p>
"Телефонний
справочнік.xls "--
основний файл, що містить таблицю перегляду бази даних та інструменти,
необхідні для роботи з нею. p>
"phones.db" - допоміжний текстовий
файл, що використовується для зберігання бази даних. p>
Робота
програми здійснюється під керуванням Microsoft Excel, що входить до складу пакету Microsoft Office, тому для її
використання необхідна наявність зазначеного пакета на клієнтському комп'ютері. p>
Ієрархія об'єктів
p>
що описується
Excel-програму в
своєму складі містить: p>
Робочу
книгу Workbook «Телефонний довідник» + програмний код VBA, що складається з двох
листів: p>
Worksheet Лист1 (Старт) +
програмний код VBA p>
Worksheet Лист2 (База даних)
+ Програмний код VBA p>
П'ять
форм + програмний код VBA: p>
addRowForm - для режиму
додавання нового запису p>
delRowForm - для режиму
видалення запису p>
editRowForm - для режиму
редагування запису p>
reportForm - для режиму формування
статистики p>
sortForm - для режиму
сортування бази даних p>
Модуль
Module1, що містить
опис типу даних Record
для одного запису про абонента, а також функції роботи (читання/запису) з такими
даними та зовнішнім файлом. p>
Панель
інструментів "Phones",
що забезпечує роботу програми і що складається з дев'яти кнопок: p>
читання
бази даних; p>
запис
бази даних; p>
додавання
запису; p>
коректування
запису; p>
видалення
запису; p>
пошук; p>
сортування; p>
звіт
(статистика); p>
вихід
з програми. p>
Керівництво користувача b>
p>
Запуск програми
p>
Для
запуску програми необхідно в MS Excel
відкрити книгу: p>
"Телефонний
справочнік.xls " p>
Ви
побачите один список з рекламною написом і двома кнопками. Для відображення аркуша
з базою даних натисніть на кнопку «Почати роботу». p>
p>
В
результаті, рекламна сторінка зникне, а замість неї з'явиться основний аркуш,
що містить шапку бази даних і панель інструментів для роботи. p>
p>
Читання/запис бази даних
p>
Оскільки
вся інформація зберігається в зовнішньому файлі, то для завантаження бази даних на лист Excel таблиці необхідно на
панелі інструментів натиснути кнопку «Відкрити базу даних». При цьому існуючі
на аркуші дані будуть замінені інформацією з зовнішнього файлу "phones.db". p>
p>
Для
збереження результатів роботи з базою даних натисніть кнопку «Зберегти базу
даних »на панелі інструментів. Вся поточна інформація, яка відображається на аркуші,
буде записана в зовнішній файл "phones.db". p>
Режими коректування даних
p>
В
цілях безпеки, аркуші книги захищені від коригування звичайними способами.
Тому для додавання, зміни та видалення інформації передбачені
відповідні режими роботи, що ініціюються другою групою кнопок панелі
інструментів. p>
При
натисканні на будь-яку з них, буде запропоновано діалогове вікно, в якому в
відповідні поля потрібно занести нову (відкоригувати існуючу)
інформацію і натиснути кнопку підтвердження операції. p>
p>
Якщо
перед вибором режиму видалення записи були відзначені кілька рядків бази даних,
то замість відображення форми з видаляється інформацією буде просто запропоновано
підтвердити видалення позначених елементів. p>
p>
Увага.
У режимі долучення/коректування запису обов'язкові для заповнення поля:
Прізвище, Ім'я, По батькові, Вулиця, Будинок, Телефон.
Крім того, в поле Телефон допускається введення тільки числових даних (не
більше 10 цифр). p>
Пошук інформації
p>
Для
пошуку потрібної інформації натисніть кнопку «Знайти» на панелі інструментів. Буде
запущений стандартний механізм пошуку інформації по аркушу MS Excel. p>
p>
Режими сортування
p>
В
програмі передбачено три режими сортування даних: p>
За
абоненту (прізвище + ім'я + по батькові); p>
За
адресою (вулиця + будинок + квартира); p>
За
телефону. p>
Для
виконання сортування досить натиснути відповідну кнопку на панелі
інструментів і вибрати один із трьох запропонованих режимів. p>
p>
Формування статистики
p>
Згідно
завданням програма дозволяє розрахувати наступну статистику: p>
Загальна
кількість абонентів телефонної мережі; p>
Кількість
телефонів на вказаній вулиці; p>
Кількість
телефонів в зазначеному будинку. p>
p>
Увійдіть
у режим «Звіт», виберіть потрібний звіт і, при необхідності, задайте
параметри його формування. Кількість абонентів за заданими реквізитами буде
пораховано і відображено в діалоговому вікні. p>
p>
p>
Завершення роботи з програмою
p>
Для
завершення роботи з програмою натисніть кнопку «Вихід» на панелі інструментів.
Лист з базою даної буде приховано, а з'явиться лист з рекламною заставкою. Для
підтвердження виходу повторно виберіть кнопку "Вихід". Якщо «Телефонний
довідник »був єдиною відкритою книгою, додаток MS Excel буде повністю
закрита, в іншому випадку - закриється тільки книга з описуваної програмою. p>
Увага.
Не забувайте зберігати інформацію в зовнішньому файлі, інакше останні
коректування можуть бути загублені. p>
Доповнення
p>
Всі
стандартні панелі інструментів ховаються і відновлюються при відкритті /
закриття книги «Телефонний довідник», а також при перемиканні між вікнами.
Щоб уникнути проблем з відновленням стандартного набору панелей інструментів
не рекомендується самостійно змінювати набір відображаються панелей інструментів
поки що описується книга залишається відкритою. p>
При
виникненні будь-якої нестандартної ситуації слід закрити книгу «Телефонний
довідник »і виставити потрібні панелі через меню« Вид ». p>
Висновок b>
p>
В
ході виконання роботи були закріплені знання по роботі в MS Excel і основам
програмування на VBA,
а також придбані практичні навички створення закінчених програмних
додатків для MS Excel. p>
Результатом
зробленої роботи є програма «Телефонний довідник», функціонально
виконує основні завдання, що стоять перед додатком такого рівня і
призначення. p>
Зрозуміло,
виконаний проект не є завершеним повною мірою. В якості
напрямків для розвитку проекту можна згадати, наприклад, більше
конкретизований механізм пошуку інформації або реалізація оптимальних
методів сортування (що може бути більш ефективним на великих обсягах
інформації). p>
Список літератури b>
p>
Потахова
І. В. Комп'ютерна підготовка. Офісне
програмування: Навчальний посібник. - Томск: Томський міжвузівський центр
дистанційної освіти, 2004. - 181с. P>
Справочное руководство по MS Excel і Visual Basic for Applications:
Microsoft Corp., 2001. P>
Демидова
Л.А., Пилькин А.Н. Програмування в середовищі Visual Basic for Applications: Практикум - М.: Горячая линия - Телеком, 2004. --
175с. P>
Додаток. Лістинг
програм b>
VBA b> p>
Робоча книга
p>
Dim oldBars (20)
As Long, kol As
Integer p>
Private Sub
Workbook_Activate () p>
kol = 0 p>
Dim bar As
CommandBar p>
For Each
bar In Application.CommandBars p>
If bar.Visible And
Not (bar.Protection = msoBarNoChangeVisible) _ p>
And
(bar.Type = msoBarTypeNormal) And Not (bar.Name = "Phones")
Then p>
kol = kol + 1 p>
oldBars (kol) = bar.index p>
End If p>
Next bar p>
For i = 1
To kol p>
Application.CommandBars (oldBars (i)). Visible = False p>
Next p>
If ThisWorkbook.ActiveSheet.Name = "База даних" Then p>
showTools p>
End If p>
End Sub p>
Private Sub
Workbook_Deactivate () p>
Dim i As
Integer p>
For i = kol To
1 Step -1 p>
Application.CommandBars (oldBars (i)). Visible = True p>
Next p>
hideTools p>
End Sub p>
Private Sub
Workbook_Open () p>
ThisWorkbook.Worksheets ( "Старт"). Visible = True 'заховати стартовий лист p>
ThisWorkbook.Worksheets ( "Старт"). Activate 'зробити активним лист з БД p>
ThisWorkbook.Worksheets ( "База даних"). Visible = False 'показати базу даних p>
End Sub p>
Лист
1 (Старт) p>
Private Sub ExitButton_Click () p>
ExitProject p>
End Sub p>
Private Sub StartButton_Click () p>
'Commandbars p>
ThisWorkbook.Worksheets ( "База даних"). Visible = True 'показати базу даних p>
ThisWorkbook.Worksheets ( "База даних"). Activate 'зробити
активним лист з БД p>
ThisWorkbook.Worksheets ( "Старт"). Visible = False 'заховати
стартовий лист p>
End Sub p>
Лист2 (База даних)
p>
Private Sub Worksheet_Activate () p>
showTools p>
End Sub p>
Private Sub Worksheet_Deactivate () p>
hideTools p>
End Sub p>
Sub addRecord () p>
If (ActiveCell.row <5) Or (Len (ActiveCell.EntireRow.Cells (, 1). Value) = 0) Then p>
Range ( "A5"). Activate p>
End If p>
ThisWorkbook.ActiveSheet.Unprotect p>
addRowForm.Show vbModal p>
ThisWorkbook.ActiveSheet.Protect p>
End Sub p>
Sub delRecord () p>
If (ActiveCell.row <5) Or (Len (ActiveCell.EntireRow.Cells (, 1). Value) = 0) Then p>
Exit Sub p>
End If p>
ThisWorkbook.ActiveSheet.Unprotect p>
If Selection.Rows.count = 1 Then p>
delRowForm.Show vbModal p>
Else p>
Dim response p>
response = MsgBox ( "Відзначено записів:" + Str (Selection.Rows.count) + Chr (13) + "Видалити все?", vbYesNoCancel, "Увага !") p>
If response = vbYes Then p>
Selection.EntireRow.Delete p>
End If p>
End If p>
ThisWorkbook.ActiveSheet.Protect p>
End Sub p>
Sub editRecord () p>
If (ActiveCell.row <5) Or (Len (ActiveCell.EntireRow.Cells (, 1). Value) = 0) Then p>
Exit Sub p>
End If p>
ThisWorkbook.ActiveSheet.Unprotect p>
editRowForm.Show vbModal p>
ThisWorkbook.ActiveSheet.Protect p>
End Sub p>
Sub sort () p>
sortForm.Show vbModal p>
ThisWorkbook.ActiveSheet.Protect p>
End Sub p>
Sub report () p>
Dim oldCell As Range p>
ThisWorkbook.ActiveSheet.Unprotect p>
Set oldCell = ActiveCell p>
reportForm.Show vbModal p>
oldCell.Activate p>
ThisWorkbook.ActiveSheet.Protect p>
End Sub p>
addRowForm
p>
Private Sub UserForm_Activate () p>
FamBox.Value = "" p>
ImBox.Value = "" p>
OtBox.Value = "" p>
StreetBox.Value = "" p>
NoBox.Value = "" p>
FlatBox.Value = "" p>
PhoneBox.Value = "" p>
FamBox.SetFocus p>
End Sub p>
Private Sub CancelButton_Click () p>
addRowForm.Hide p>
End Sub p>
Private Sub OKButton_Click () p>
'перевірка інформації p>
Dim box As Variant, boxes As Variant p>
boxes = Array (FamBox, ImBox, OtBox, StreetBox,
NoBox, PhoneBox) p>
For Each
box In boxes p>
If Len (Trim (box.Value))
= 0 Then p>
box.SetFocus p>
Exit Sub p>
End If p>
Next box p>
If Len (Trim (PhoneBox.Value))
> 10 Then p>
MsgBox "Більше 10 цифр у номері
телефону " p>
PhoneBox.SetFocus p>
Else p>
'заповнення записи з форми p>
Dim myRecord As Record p>
myRecord.Fam = FamBox.Value p>
myRecord.Im = ImBox.Value p>
myRecord.Ot = OtBox.Value p>
myRecord.street = StreetBox.Value p>
myRecord.no = NoBox.Value p>
myRecord.Flat = FlatBox.Value p>
myRecord.Phone = Val (PhoneBox.Value) p>
'додавання рядка
на лист і її заповнення p>
ActiveCell.EntireRow.Insert p>
putRecord ActiveCell.EntireRow, myRecord p>
'приховування форми p>
addRowForm.Hide p>
End If p>
End Sub p>
Private Sub PhoneBox_KeyPress (ByVal KeyAscii As MSForms.ReturnInteger) p>
If (KeyAscii Asc ( "9")) Then p>
MsgBox "Допускається введення лише
цифр! " p>
KeyAscii.Value = 0 p>
End If p>
End Sub p>
delRowForm
p>
Private Sub CancelButton_Click () p>
delRowForm.Hide p>
End Sub p>
Private Sub OKButton_Click () p>
'видалення поточного рядка p>
ActiveCell.EntireRow.Delete p>
'приховування форми p>
delRowForm.Hide p>
End Sub p>
Private Sub UserForm_Activate () p>
Dim myRecord As Record p>
myRecord = getRecord (ActiveCell.EntireRow) p>
FamBox.Value = myRecord.Fam p>
ImBox.Value = myRecord.Im p>
OtBox.Value = myRecord.Ot p>
StreetBox.Value = myRecord.street p>
NoBox.Value = myRecord.no p>
FlatBox.Value = myRecord.Flat p>
PhoneBox.Value = myRecord.Phone p>
OKButton.SetFocus p>
End Sub p>
editRowForm
p>
Private Sub UserForm_Activate () p>
Dim myRecord As Record p>
myRecord = getRecord (ActiveCell.EntireRow) p>
FamBox.Value = myRecord.Fam p>
ImBox.Value = myRecord.Im p>
OtBox.Value = myRecord.Ot p>
StreetBox.Value = myRecord.street p>
NoBox.Value = myRecord.no p>
FlatBox.Value = myRecord.Flat p>
PhoneBox.Value = myRecord.Phone p>
FamBox.SetFocus p>
End Sub p>
Private Sub CancelButton_Click () p>
editRowForm.Hide p>
End Sub p>
Private Sub OKButton_Click () p>
'перевірка інформації p>
Dim box As Variant, boxes As Variant p>
boxes = Array (FamBox, ImBox, OtBox, StreetBox,
NoBox, PhoneBox) p>
For Each
box In boxes p>
If Len (Trim (box.Value))
= 0 Then p>
box.SetFocus p>
Exit Sub p>
End If p>
Next box p>
If Len (Trim (PhoneBox.Value))
> 10 Then p>
MsgBox "Більше 10 цифр у номері
телефону " p>
PhoneBox.SetFocus p>
Else p>
'заповнення записи з форми p>
Dim myRecord As Record p>
myRecord.Fam = FamBox.Value p>
myRecord.Im = ImBox.Value p>
myRecord.Ot = OtBox.Value p>
myRecord.street = StreetBox.Value p>
myRecord.no = NoBox.Value p>
myRecord.Flat = FlatBox.Value p>
myRecord.Phone = Val (PhoneBox.Value) p>
'додавання рядка
на лист і її заповнення p>
putRecord
ActiveCell.EntireRow, myRecord p>
'приховування форми p>
editRowForm.Hide p>
End If p>
End Sub p>
Private Sub PhoneBox_KeyPress (ByVal KeyAscii As MSForms.ReturnInteger) p>
If (KeyAscii Asc ( "9")) Then p>
MsgBox "Допускається введення лише
цифр! " p>
KeyAscii.Value = 0 p>
End If p>
End Sub p>
reportForm
p>
Private Sub UserForm_Activate () p>
AllOption.Value = True p>
OKButton.Caption = "Розрахунок" p>
OKButton.SetFocus p>
End Sub p>
Private Sub AllOption_Click () p>
OKButton.Caption = "Розрахунок" p>
End Sub p>
Private Sub StreetOption_Click () p>
OKButton.Caption = "Параметри ..." p>
End Sub p>
Private Sub HouseOption_Click () p>
OKButton.Caption = "Параметри ..." p>
End Sub p>
Private Sub CancelButton_Click () p>
reportForm.Hide p>
End Sub p>
Private Sub OKButton_Click () p>
Dim myRecord As Record p>
Dim counter As Long p>
Dim street As String, no As String, title As String p>
If AllOption.Value Then p>
counter = count () p>
MsgBox "Загальна кількість абонентів:
"+ Str (counter) p>
Else p>
myRecord = getRecord (ActiveCell.EntireRow) p>
If StreetOption.Value Then p>
title = "Звіт по вулиці" p>
street = InputBox ( "Задайте найменування вулиці:", title,
myRecord.street) p>
If Len (street)
> 0 Then p>
street = Trim (street) p>
counter = count (street) p>
MsgBox "Кількість телефонів на вулиці '" + street +" ':" + Str (counter) p>
End If p>
Else p>
title = "Звіт по будинку" p>
street = InputBox ( "Задайте найменування вулиці:", title,
myRecord.street) p>
If Len (street)
> 0 Then p>
street = Trim (street) p>
no = InputBox ( "Вулиця '" + street + "'" + Chr (10) + "Задайте номер будинку:", title, myRecord.no) p>
If Len (no)
> 0 Then p>
no = Trim (no) p>
counter = count (street, no) p>
MsgBox "Кількість
телефонів в будинку ' "+ street +" "+ no +"':
"+ Str (counter) p>
End If p>
End If p>
End If p>
End If p>
reportForm.Hide p>
End Sub p>
Private Function count (Optional street, Optional no) As Long p>
Dim myRecord As Record p>
Dim data As Range, curRow As Range p>
Dim doCalc As Boolean, counter As Long p>
counter = 0 p>
Range ( "A5"). Activate p>
Set data = ActiveCell.CurrentRegion p>
For Each
curRow In data.Rows p>
myRecord = getRecord (curRow) p>
doCalc = False p>
If IsMissing (street) Then p>
'всі абоненти p>
doCalc = True p>
Else p>
If IsMissing (no) Then p>
'по вулиці p>
doCalc = (Trim (myRecord.street) = street) p>
Else p>
'по будинку p>
doCalc = (Trim (myRecord.street) = street) And (Trim (myRecord.no) =
no) p>
End If p>
End If p>
If doCalc Then counter = counter + 1 p>
Next curRow p>
count = counter p>
End Function p>
sortForm
p>
Private Sub UserForm_Activate () p>
OKButton.SetFocus p>
End Sub p>
Private Sub CancelButton_Click () p>
sortForm.Hide p>
End Sub p>
Private Sub OKButton_Click () p>
Dim sht As Worksheet p>
Dim rng As Range p>
Set sht = ThisWorkbook.ActiveSheet p>
Set rng = sht.Range (sht.Cells (5, 1), sht.Cells (65536, 1). End (xlUp). Offset (, 7)) p>
If NameOption.Value Then p>
'сортувати по ПІБ p>
rng.sort Key1: = sht.Columns ( "A"), Order1: = xlAscending,
Key2: = sht.Columns ( "B"), Order2: = xlAscending, Key3: = sht.Columns ( "C"), Order3: = xlAscending,
Header: = xlNo p>
Else p>
If AddressOption.Value Then p>
'сортувати за адресою p>
rng.sort Key1: = sht.Columns ( "D"), Order1: = xlAscending,
Key2: = sht.Columns ( "E"), Order2: = xlAscending, Key3: = sht.Columns ( "F"), Order3: = xlAscending,
Header: = xlNo p>
Else p>
'сортувати по телефону p>
rng.sort Key1: = sht.Columns ( "G"), Order1: = xlAscending,
Header: = xlNo p>
End If p>
End If p>
sortForm.Hide p>
End Sub p>
Module1
p>
Public Type Record p>
Fam As String p>
Im As String p>
Ot As String p>
street As String p>
no As String p>
Flat As String p>
Phone As Long p>
End Type p>
Public Function dbFileName () As String p>
dbFileName = ThisWorkbook.Path + "phones.db" p>
End Function p>
Sub ToolbarExitButton () p>
If ThisWorkbook.ActiveSheet.Name = "Старт" Then p>
ExitProject p>
Else p>
ThisWorkbook.Worksheets ( "Старт"). Visible = True 'заховати стартовий лист p>
ThisWorkbook.Worksheets ( "Старт"). Activate 'зробити активним лист з БД p>
ThisWorkbook.Worksheets ( "База даних"). Visible = False 'показати базу даних p>
End If p>
End Sub p>
Sub ExitProject () p>
ThisWorkbook.Saved = True p>
If Application.Workbooks.count = 1 Then p>
Application.Quit 'завершити роботу Excel p>
Else p>
ThisWorkbook.Close 'завершити роботу проекту p>
End If p>
End Sub p>
Sub dbRead () p>
ThisWorkbook.ActiveSheet.Unprotect p>
Dim myRecord As Record p>
Dim data As Range, curRow As Range p>
Dim row As Integer p>
Range ( "A5"). Activate p>
Set data = ActiveCell.CurrentRegion p>
data.ClearContents p>
Open dbFileName For Input
As # 1 p>
row = 1 p>
Do While
Not EOF (1) p>
Input # 1, myRecord.Fam, myRecord.Im, myRecord.Ot,
myRecord.street, myRecord.no, myRecord.Flat, myRecord.Phone p>
putRecord ActiveCell.Cells (row), myRecord p>
row = row + 1 p>
Loop p>
Close # 1 p>
ThisWorkbook.ActiveSheet.Protect p>
End Sub p>
Sub dbWrite () p>
ThisWorkbook.ActiveSheet.Unprotect p>
Dim myRecord As Record p>
Dim data As Range, curRow As Range p>
Range ( "A5"). Activate p>
Set data = ActiveCell.CurrentRegion p>
Open dbFileName For Output As # 1 p>
For Each
curRow In data.Rows p>
myRecord = getRecord (curRow) p>
Write # 1, myRecord.Fam, myRecord.Im, myRecord.Ot,
myRecord.street, myRecord.no, myRecord.Flat, myRecord.Phone p>
Next curRow p>
Close # 1 p>
ThisWorkbook.ActiveSheet.Protect p>
End Sub p>
Function getRecord (row As Range) As Record p>
Dim myRecord As Record p>
myRecord.Fam = row.Cells (, 1). Value p>
myRecord.Im = row.Cells (, 2). Value p>
myRecord.Ot = row.Cells (, 3). Value p>
myRecord.street = row.Cells (, 4). Value p>
myRecord.no = row.Cells (, 5). Value p>
myRecord.Flat = row.Cells (, 6). Value p>
myRecord.Phone = row.Cells (, 7). Value p>
getRecord = myRecord p>
End Function p>
Sub putRecord (row As Range, myRecord As Record) p>
row.Cells (, 1). Value = myRecord.Fam p>
row.Cells (, 2). Value = myRecord.Im p>
row.Cells (, 3). Value = myRecord.Ot p>
row.Cells (, 4). Value = myRecord.street p>
row.Cells (, 5). Value = myRecord.no p>
row.Cells (, 6). Value = myRecord.Flat p>
row.Cells (, 7). Value = myRecord.Phone p>
End Sub p>
Sub showTools () p>
Application.CommandBars ( "Phones"). Enabled = True p>
Application.CommandBars ( "Phones"). Visible = True p>
End Sub p>
Sub hideTools () p>
Application.CommandBars ( "Phones"). Visible = False p>
Application.CommandBars ( "Phones"). Enabled = False p>
End Sub p>