1434
25.02.2015

Автоматизация заполнения бланка квитанции при помощи макросов Excel

В заключительной части этой темы мы разберем интересную практическую ситуацию, связанную с выпиской квитанции на оплату. Начнем работу с создания новой книги и один из листов оформим в виде, представленном на рис. 3.33. Это будет бланк квитанции об оплате. Здесь используется форматирование ячеек и размещение на листе дополнительных фигур (линий).

Рис. 3.33. Бланк квитанции

Рис. 3.33. Бланк квитанции

Далее наша цель заключается в обеспечении автоматизации при заполнении фрагментов квитанции, выделенных линиями. Для определенности будем считать, что выписываются квитанции для внесения оплаты за обучение (хотя какого-то принципиального значения тематика рассматриваемого примера не имеет). При оплате за обучение возможна ситуация, когда плательщик и сам учащийся — разные люди. Например, обучение оплачивает родственник. И это мы в нашей разработке должны предусмотреть. Также в квитанции сумму необходимо заполнить как цифрами, так и прописью. Поэтому потребуется обеспечить перевод числа в пропись.

Создадим еще один лист в нашей книге, который назовем Управление (рис. 3.34). Здесь, начиная с восьмой строки, располагается справочная информация об учащихся и плательщиках. Элемент управления «Поле со списком» заполняется фамилиями учащихся при открытии книги. Для этого нам понадобится оформить соответствующим образом процедуру (листинг 3.33), выполняемую при открытии книги.

1
2
3
4
5
6
7
8
9
10
11
12
13
' Листинг 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. Лист Управление

Рис. 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), которая обеспечивает заполнение бланка квитанции.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
' Листинг 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. Заполнение бланка квитанции

Рис. 3.35. Заполнение бланка квитанции

Решения для офиса

Публикации по этой теме

 

Выбор посетителей