Тест. Тест в Word c использованием языка VBA. Создание и использование электронных форм в Microsoft Word Создание и обработка тестов
Скачать 37.23 Kb.
|
Создание и использование электронных форм в Microsoft Word Создание и обработка тестов Три варианта теста (открытого типа (ответы вводятся номером варианта ответа в текстовое поле формы), выбор варианта ответа из списка (поле со списком), множественный выбор (ответы выбираются установкой соответствующих флажков (поле формы))). (Три документа Word С соответствующими полями формы с расширением docm). На эти документы, когда они будут созданы, должна быть обязательно установлена защита (на ленте Разработчик Ограничить редактирование и далее: разрешить ввод данных в поля форм, включить защиту). Если надо вернуться к редактированию документа, защиту отключаете). Три варианта таблиц с результатами тестирования (четыре столбца с заголовками: номер вопроса, правильный ответ, ответ тестируемого (в этот столбец перенесете результаты тестируемого), результат (в этом столбце отмечаете выполнение (например, 0 или 1)). В последней строке таблицы два столбца: заголовок Оценка и вычисленная оценка. ))). (Три документа Word с таблицей результатов выполнения теста с расширением docх. 7 вопросов. Считаете количество правильных ответов и выставляете оценку (на 90% ответили правильно -5, на 75% - 4, на 60 – 3, иначе – 2). Алгоритм решения: Создаете тест. Добавляете кнопку, после нажатия на которую, откроется документ с таблицей о результатах выполнения теста. После того, как создали кнопку, подписываете её соответствующим образом, далее двойной щелчок левой кнопкой мыши и будет создан шаблон процедуры, которая будет выполняться, когда тестируемый щёлкнет левой кнопкой мыши на кнопке теста для его окончания. Весь программный код будет написан только в этой процедуре (между Sub … End Sub) . Спросите фамилию тестируемого. Если в диалоговое поле ничего не будет введено, попросите назвать себя снова. Для переноса ответов тестируемого из теста в таблицу результатов (а это два разных документа) нужно создать массив с ответами тестируемого (так работать будет быстрее), элементы массива – тип variant (по умолчанию). Можно использовать частный случай, когда вопросов 7, а можно предусмотреть более универсальный вариант (для любого количества вопросов). Для первого варианта описание массива – dim x(7) (Если хотите нумерацию элементов массива с 1, то перед заголовком процедуры вставляете Option Base 1, иначе этого делать не надо и нумерация будет с 0). Для второго варианта, как определить количество элементов в будущем массиве? Все поля формы (текстовые поля, списки, флажки) являются экземплярами семейства FormFields. А у любого семейства определено свойство Count доступное только для чтения, т. е. и определяет количество значений в массиве x. Чтобы описать массив - dim x(FormFields. Count) (с 0 или 1 нумеровать элементы массива определитесь, как удобнее). Для того, чтобы данные из полей формы переместить в массив, удобнее работать с циклом for each … next For each i in FormFields … Next Что в теле цикла? Как взять данные из поля формы. У экземпляра семейства FormFields (а это величина i, которая указана в качестве счетчика цикла) есть свойство result и это содержимое поля формы (для флажка 0 {false) или 1 {true), для остальных – текст), т. е. i.result – это содержимое поля формы. Так как в цикле просматриваем все экземпляры семейства FormFields, следовательно, получим доступ к значению i.result всех полей формы. Если i.result не равно “”, то в массив x по соответствующему номеру помещаем i.result, например, 0 (для флажков другой алгоритм, их в в 4 раза больше (для нашего случая – 4 варианта ответа, 7 вопросов, т. е. флажков 7*4=28. Их надо собрать в 7 строк по четыре значения в каждом и помеcтить в массив х. Не забывайте индекс массива увеличивать на единицу перед записью нового значения). В этом же цикле очищаете i.result. После выполнения предыдущего цикла, готов массив x с ответами тестируемого. Открываем документ с таблицей результатов Documents.Open("Полное имя файла с расширением docx”). Открываете текстовый файл для дополнения результатами тестирования. Документ Word становится активным. В нем содержится таблица с результатами. Как попасть в таблице в нужную ячейку? ActiveDocument.Tables(1).Cell(строка, столбец).Range – курсор в нужном месте таблицы результатов. В цикле по количеству вопросов (for … next) записываете данные в нужный столбец таблицы, сравниваете данные в соответствующих столбцах для получения количества правильных ответов для получения оценки и накопления строки с фамилией тестируемого с результатами выполнения для дополнения текстового файла с итогами тестирования. Поставить оценку в таблице. Дополнить итогами текстовый файл. Закрыть текстовый файл. |