Автоматизація заповнення бланка квитанції за допомогою макросів excel - трюки і прийоми в microsoft
У заключній частині цієї теми ми розберемо цікаву практичну ситуацію, пов'язану з випискою квитанції на оплату. Почнемо роботу зі створення нової книги і один з листів оформимо у вигляді, представленому на рис. 3.33. Це буде бланк квитанції про оплату. Тут використовується форматування осередків і розміщення на аркуші додаткових фігур (ліній).
Мал. 3.33. бланк квитанції
Далі наша мета полягає в забезпеченні автоматизації при заповненні фрагментів квитанції, виділених лініями. Для визначеності будемо вважати, що виписуються квитанції для внесення оплати за навчання (хоча якогось принципового значення тематика даного прикладу не має). При оплаті за навчання можлива ситуація, коли платник і сам учень - різні люди. Наприклад, навчання оплачує родич. І це ми в нашій розробці повинні передбачити. Також в квитанції суму необхідно заповнити як цифрами, так і прописом. Тому потрібно забезпечити переклад числа в пропис.
Створимо ще один лист в нашій книзі, який назвемо Управління (рис. 3.34). Тут, починаючи з восьмої рядка, розташовується довідкова інформація про учнів та платників. Елемент управління «Поле зі списком» заповнюється прізвищами учнів при відкритті книги. Для цього нам знадобиться оформити відповідним чином процедуру (лістинг 3.33), виконувану при відкритті книги.
'Лістинг 3.33. Процедура, яка виконується при відкритті книги Private Sub Workbook_Open () 'Підрахунок числа учнів N = 0 While Worksheets (1) .Cells (N + 8, 1) .Value <> "" N = N + 1 Wend 'Заповнення списку учнів Worksheets (1) .Spk.Clear For i = 1 To N Worksheets (1) .Spk.AddItems (1) .Cells (i + 7, 1) .Value Next End Sub
Мал. 3.34. лист Управління
Тут передбачається, що лист Управління розташовується на першому місці серед листів книги. Також для поля зі списком підібрано Spk як значення властивості Name.
Тепер користувач, після вибору клацанням в поле зі списком цікавить його студента, повинен автоматично отримати в осередку, розташованої нижче заголовка Платник. прізвище платника (як уже говорилося, це може бути або сам студент, або один з його родичів). Після цього необхідно внести суму для квитанції і дату. Ця інформація вводиться в третій і четвертий стовпчики нижче відповідних підписів на аркуші.
Тепер важливий технічний момент. Для квитанції необхідно перетворити числове вираз суми в строкове (представити прописом). Зрозуміло, необхідна функція, яка це робить. Серед стандартних функцій Microsoft Excel такої немає, і слід скористатися додатковим модулем.
Один з найбільш зручних варіантів вирішення даної проблеми виглядає наступним чином. У будь-якій пошуковій системі (наприклад, Rambler або Yandex) слід набрати в рядку пошуку «пропис Excel». В результаті ви отримаєте декілька пропозицій. Рекомендується зупинитися на модулі d2w.xla. Цей файл являє надбудову для Microsoft Excel. Необхідно розпакувати вміст завантаженого архіву та розмістити файл d2w.xla в папці Program Files ► Microsoft Office ► Office12 ► XLSTART. Після цього модуль буде автоматично підключатися при запуску Microsoft Excel.
Після виконаних дій можна в будь-якій книзі Microsoft Excel використовувати формулу виду = пропис (число) для перекладу числового значення відповідної комірки в прописну форму. Нею і слід скористатися па робочому аркуші в третьому рядку третього стовпчика: = пропив (R [-1] С). Тепер залишилося написати процедуру обробки клацання на кнопці Заповнити (лістинг 3.34), яка забезпечує заповнення бланка квитанції.
'Лістинг 3.34. Обробка клацання на кнопці Заповнити Private Sub CommandButton1_Click () 'Інформація про платника Worksheets ( "Бланк"). Cells (10, 4) .Value = Cells (2, 2) .Value Worksheets ( "Бланк"). Cells (26, 4 ) .Value = Cells (2, 2) .Value 'Інформація про учня Worksheets ( "Бланк"). Cells (11, 3) .Value = Spk.Text Worksheets ( "Бланк"). Cells (27, 3) .Value = Spk.Text 'Інформація про суму Worksheets ( "Бланк"). Cells (12, 4) .Value = Cells (2, 3) .Value Worksheets ( "Бланк"). Cells (28, 4) .Value = Cells ( 2, 3) .Value 'Інформація про суму прописом Worksheets ( "Бланк"). Cells (13, 3) .Value = Cells (3, 3) .Value Worksheets ( "Бланк"). Cells (29, 3) .Value = Cells (3, 3) .Value 'Дата Worksheets ( "Бланк"). Cells (15, 7) .Value = Cells (2, 4) .Value Worksheets ( "Бланк"). Cells (31, 7) .Value = Cells (2, 4) .Value End Sub
Результат заповнення бланка квитанції продемонстрований на рис. 3.35.
Мал. 3.35. Заповнення бланка квитанції