Разработка автоматизированного рабочего места специалиста кафедры
В ходе написания квалификационной работы было разработано автоматизированное рабочее место специалиста кафедры. АРМ был написан на языке программирования VBA VisualBasicforApplications в программе MS Excel. В книге Excel было создано 7 листов. Лист «Расчет учебной нагрузки на ПИЭ» (рис. 11) отображает документ, в котором нагрузка представлена в общем виде. Формирования нагрузки происходит путем назначения каждой дисциплине преподавателя.
Для назначения преподавателей использовался выпадающий список с фамилиями преподавателей (рис12). Выпадающий список был создан с помощью умных таблиц. Умные таблицы удобны тем что:
- Умеют расти вниз, путём обычного дописывания значений снизу. То есть таблица "понимает", что снизу приписали ещё одно новое значение и автоматически себя расширяет без дополнительных команд от пользователя
- Умеют возвращать формулой свои столбцы .
Ячейки, которые стали источником для будущего списка, были размещены на листе «Список преподавателей».
На данном листе есть две кнопки «Главное меню» и «Формирование нагрузки». По нажатию на кнопку «Главное меню» пользователю открывается форма для формирования графиков и перехода на различные листы книги (рис.12).
При нажатии на кнопку формирование нагрузки запускается макрос «Нагрузка», который распределяет учебную нагрузку для каждого преподавателя в отдельности и подсчитывает общую сумму часов.
Sub Нагрузка()
Application.ScreenUpdating = 0
m = 6
k = 2
'Заносим значение из ячеек в переменную fio (2лист)
While Application.Workbooks(1).Worksheets(2).Cells(k, 1) <> ""
fio = Application.Workbooks(1).Worksheets(2).Cells(k, 1).Value
'выводим значение fio во второй столбец
Worksheets(4).Cells(m, 2) = fio
m = m + 1
p = m
'Сравниваем значение fio (на 1 листе) в диапозоне если они совподают то копируем данные (на 3 лист)
For i = 6 To 130
For j = 39 To 65
If Worksheets(1).Cells(i, j).Value = fio Then
Worksheets(1).Select
Range(Cells(i, 2), Cells(i, 34)).Select
Selection.Copy
Worksheets(4).Select
Cells(m, 5).Select
ActiveSheet.Paste
m = m + 1
End If
Next
Next
'Расчитываем сумму и выводим сумму
t = "=sum(AK" + Trim(Str(p)) + ":AK" + Trim(Str(m - 1)) + ")"
Application.Workbooks(1).Worksheets(4).Cells(m, 37) = t
'подсвечиваем строку с суммой и выводим слово ИТОГО
Application.Workbooks(1).Worksheets(4).Cells(m, 3) = "ИТОГО"
Range(Worksheets(4).Cells(m, 1), Worksheets(4).Cells(m, 41)).Select
With Selection.Interior
.ColorIndex = 6
.Pattern = xlSolid
End With
m = m + 1
k = k + 1
Wend
Application.ScreenUpdating = 1
End Sub
В результате на листе «Распределение учебной нагрузки» формируется следующий документ (рис. 13).
Рассмотрим лист сформировавшийся лист «Распределение учебной нагрузки». На нем так же есть кнопка «Главное меню» которая откроет форму главного меню. Следующая кнопка «Границы» позволяет создать сетку для каждой ячейки сформировавшегося документа. Кнопка «Печать» которая отвечает за печать выделенного диапазона. Данная кнопка удобна в случае, когда необходимо распечатать конкретного преподавателя, а не печатать весь документ целиком. Следующая кнопка «Очистить лист» позволяет очистить сформированную нагрузку.
Форма «Главного меню» предназначена для мобильного передвижения по программе, а так же для быстрого формирования графиков. Графики формируются для I и II полугодия обучения:
- графики контрольных работ (рис.14);
- графики самостоятельных работ (рис.15);
- графики консультационных работ (рис.16);
- графики защиты курсовых работ (рис.17).
Для формирования каждого графика в книги excelе есть отдельный лист с готовым шаблоном графика, куда заносятся данные из нагрузки, которые потом переносятся в документ MS Word.
Private Sub CommandButton2_Click()
' графикКонтрольныхРабот Макрос
Application.ScreenUpdating = 0
k1 = 2
n = 1
'Сравниваем значение fio (на 1 листе) в диапозоне если они совподают то копируем данные (на 3 лист)
For i = 6 To 130
For j = 39 To 65
Worksheets(1).Select
' Условия выборки
If Cells(i, j) <> "" Then '1 условие Если в ячейках есть фамилия
'условие Если в ячейках есть часы контрольных работ
If Cells(i, 25) <> 0 Then
If (Cells(i, 5) = 1 Or Cells(i, 5) = 3 Or Cells(i, 5) = 5 Or Cells(i, 5) = 7) Then ' 2 условие Если в ячейке (i, 5) семестр нечетные цыфры 1,3,5,7, тогда в переменные заносятся значения
t1 = Cells(i, 2) 'Профиль
t2 = Cells(i, 3) 'Дисциплина
t3 = Cells(i, j) ' Фамилия
'Переходим на 5 лист и выводим переменные
Worksheets(5).Select
Cells(k1, 5) = t1
Cells(k1, 2) = t2
Cells(k1, 7) = t3
Cells(k1, 1) = n
k1 = k1 + 1
n = n + 1
End If
End If
'Проверка на курс
If (Worksheets(1).Cells(i, 5) = 1 Or Worksheets(1).Cells(i, 5) = 2) Then Worksheets(5).Cells(k1, 4) = "1"
ElseIf (Worksheets(1).Cells(i, 5) = 3 Or Worksheets(1).Cells(i, 5) = 4) Then Worksheets(5).Cells(k1, 4) = "2"
ElseIf (Worksheets(1).Cells(i, 5) = 5 Or Worksheets(1).Cells(i, 5) = 6) Then Worksheets(5).Cells(k1, 4) = "3"
ElseIf (Worksheets(1).Cells(i, 5) = 7 Or Worksheets(1).Cells(i, 5) = 8) Then Worksheets(5).Cells(k1, 4) = "4"
End If
Next
Next
Worksheets(5).Select
r = 1
While Cells(r, 1) <> ""
r = r + 1
Wend
'MsgBox r
Range(Cells(1, 1), Cells(r, 7)).Copy
Set oWord = CreateObject("Word.Application") 'Создаем отчет Ms Word
oWord.Visible = True
Set oDoc = oWord.Documents.Add()
oDoc.Activate
With oWord.Selection
.Font.Bold = True
.Font.Size = 16
.TypeText Text:="График проведения контрольных работ по кафедре прикладная информатика в экономике на первое полугодие "
.TypeParagraph
End With
oWord.Selection.Paste
Application.ScreenUpdating = 1
End Sub