Главная страница
Навигация по странице:

  • Разработчик Ограничить редактирование

  • FormFields

  • ActiveDocument . Tables (1). Cell (строка, столбец). Range

  • Тест. Тест в Word c использованием языка VBA. Создание и использование электронных форм в Microsoft Word Создание и обработка тестов


    Скачать 37.23 Kb.
    НазваниеСоздание и использование электронных форм в Microsoft Word Создание и обработка тестов
    Дата03.05.2021
    Размер37.23 Kb.
    Формат файлаdocx
    Имя файлаТест в Word c использованием языка VBA.docx
    ТипДокументы
    #201045

    Создание и использование электронных форм в Microsoft Word

    Создание и обработка тестов

    Три варианта теста (открытого типа (ответы вводятся номером варианта ответа в текстовое поле формы), выбор варианта ответа из списка (поле со списком), множественный выбор (ответы выбираются установкой соответствующих флажков (поле формы))). (Три документа Word С соответствующими полями формы с расширением docm). На эти документы, когда они будут созданы, должна быть обязательно установлена защита (на ленте Разработчик Ограничить редактирование и далее: разрешить ввод данных в поля форм, включить защиту). Если надо вернуться к редактированию документа, защиту отключаете).

    Три варианта таблиц с результатами тестирования (четыре столбца с заголовками: номер вопроса, правильный ответ, ответ тестируемого (в этот столбец перенесете результаты тестируемого), результат (в этом столбце отмечаете выполнение (например, 0 или 1)). В последней строке таблицы два столбца: заголовок Оценка и вычисленная оценка. ))). (Три документа Word с таблицей результатов выполнения теста с расширением docх.

    7 вопросов. Считаете количество правильных ответов и выставляете оценку (на 90% ответили правильно -5, на 75% - 4, на 60 – 3, иначе – 2).

    Алгоритм решения:

    Создаете тест. Добавляете кнопку, после нажатия на которую, откроется документ с таблицей о результатах выполнения теста. После того, как создали кнопку, подписываете её соответствующим образом, далее двойной щелчок левой кнопкой мыши и будет создан шаблон процедуры, которая будет выполняться, когда тестируемый щёлкнет левой кнопкой мыши на кнопке теста для его окончания. Весь программный код будет написан только в этой процедуре (между SubEnd Sub) .

    Спросите фамилию тестируемого. Если в диалоговое поле ничего не будет введено, попросите назвать себя снова.

    Для переноса ответов тестируемого из теста в таблицу результатов (а это два разных документа) нужно создать массив с ответами тестируемого (так работать будет быстрее), элементы массива – тип variant (по умолчанию). Можно использовать частный случай, когда вопросов 7, а можно предусмотреть более универсальный вариант (для любого количества вопросов). Для первого варианта описание массива – dim x(7) (Если хотите нумерацию элементов массива с 1, то перед заголовком процедуры вставляете Option Base 1, иначе этого делать не надо и нумерация будет с 0). Для второго варианта, как определить количество элементов в будущем массиве? Все поля формы (текстовые поля, списки, флажки) являются экземплярами семейства FormFields. А у любого семейства определено свойство Count доступное только для чтения, т. е. и определяет количество значений в массиве x. Чтобы описать массив - dim x(FormFields. Count) (с 0 или 1 нумеровать элементы массива определитесь, как удобнее).

    Для того, чтобы данные из полей формы переместить в массив, удобнее работать с циклом for eachnext

    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) записываете данные в нужный столбец таблицы, сравниваете данные в соответствующих столбцах для получения количества правильных ответов для получения оценки и накопления строки с фамилией тестируемого с результатами выполнения для дополнения текстового файла с итогами тестирования.

    Поставить оценку в таблице. Дополнить итогами текстовый файл. Закрыть текстовый файл.


    написать администратору сайта