Программа для создания тестов

Бесплатная программа для составления тестов

Программа тест


Данная программа предназначена для составления тестов. Принцип работы простой - в Microsoft Excel создаем список вопросов-ответов и с помощью макроса на VBA генерируем в Word-е билеты тестов. Указываются количество билетов и количество вопросов к ним. Вопросы выбираются генератором случайных чисел. Количество ответов к вопросу не ограничено. Параллельно в Экселе генерируется матрица Вариант-> номер вопроса -> номер правильного ответа.
Формат записи вопросов ответов в Excel показан на Рисунке:
Конструктор тестов

То есть, в первом столбце - напротив правильного ответа крестик (любой символ);
во втором столбце - номер вопроса, можно не по порядку;
в третьем - текст вопроса;
в четвертом - номер варианта ответа (можно и цифры и буквы);
в пятом - тексты ответов.
Ниже приведен код программы, его нужно скопировать и вставить в макросы Excel.
Но лучше, чтобы сразу стало все ясно - загрузить файл с примером Скачать конструктор тестов

'====================================================================

Sub TestsGenerate()

' макрос генерации тестов в Word-е из Excel-я

' (КубГТУ)

' сделано в Апшеронске

 

Dim test_count As Integer 'количество тестов

Dim quest_count As Integer ' количество вопросов в тесте

Dim max_quest As Integer ' общее количество вопросов на листе

Dim list As String ' название листа в Экселе откуда брать вопросы

 

    Worksheets("AI").Activate ' активируем лист с входными и выходными данными

    ActiveCell.SpecialCells(xlLastCell).Select

    MaxString = ActiveCell.Row

    'Worksheets("0").Cells(2, 1).Value = "x"

   

   

' открываем Word

    Dim WRD

    Set WRD = CreateObject("Word.Application")

    WRD.Visible = True

    WRD.Documents.Open "C:\test.doc" ' Путь к файлу формата Microsoft Word, в который формировать варианты тестов

   

   

    test_count = 24 ' (здесь задаем количество вариантов)

    quest_count = 5 ' (здесь задаем количество вопросов в тесте)

    max_quest = 120 ' (номер максимального номера вопроса (второй столбей))

    sea = 2

   

    Randomize

   

    For i = 0 To test_count Step 1 ' цикл по количеству тестов

         WRD.Selection.Font.Size = 14

         WRD.Selection.Font.Bold = True

         WRD.Selection.TypeText Text:="Вариант  #" + CStr(i)

         WRD.Selection.Font.Bold = wdToggle

         WRD.Selection.TypeParagraph

         WRD.Selection.Font.Size = 12

         ' Ответы в Эксель

         Worksheets("0").Cells(sea, 1).Value = "Вариант " + CStr(i)

         sea = sea + 1

        

        For j = 1 To quest_count Step 1 ' цикл по количеству вопросов в тесте

            num = Int(Rnd * max_quest) + 1

            'MsgBox (num)

            ' цикл по столбцу В, чтобы найти выбранный номер вопроса

            tmp = 0

            For z = 1 To MaxString Step 1

                If (Int(Cells(z, 2).Value) = num) Then

                    'MsgBox (Cells(z, 3).Value)

                    tmp = z

                    Exit For ' вышли, запомнив z

                End If

            Next z

            ' в ыводим в Word, если найден вопрос

            If tmp = 0 Then

               str1 = "Номер вопроса не найден: " + CStr(num)

               MsgBox (str1) ' не найденный номер

            End If

           

            If tmp <> 0 Then

               WRD.Selection.Font.Bold = True

               WRD.Selection.TypeText Text:="Вопрос  #" + CStr(j)

               WRD.Selection.Font.Bold = wdToggle

               WRD.Selection.TypeParagraph

               WRD.Selection.TypeText Text:=Trim(Cells(tmp, 3).Value)

               WRD.Selection.TypeParagraph

               ' теперь цикл по количеству вариантов ответа

               For k = 1 To 4 Step 1 ' дело в том, что количество ответов может быть 2, 3 или 4

                   If (Int(Cells(tmp + k, 2).Value) = 0) Then

                      

                       WRD.Selection.TypeText Text:=Trim(Cells(tmp + k, 4).Value) + ".  " + Trim(Cells(tmp + k, 5).Value)

                       WRD.Selection.TypeParagraph

                       ' Ответы в Эксель

                       If Len(Cells(tmp + k, 1).Value) <> 0 Then

                            Worksheets("0").Cells(sea, 2).Value = j

                            Worksheets("0").Cells(sea, 3).Value = num

                            Worksheets("0").Cells(sea, 4).Value = k

                            sea = sea + 1

                       End If

                   Else

                        Exit For

                   End If

               Next k

               WRD.Selection.TypeParagraph

              

                'WRD.Selection.InsertBreak.WdBreakType.wdSectionBreakNextPage = True

                WRD.Selection.InsertBreak (WdBreakType.wdLineBreak)

            End If

        Next j

        sea = sea + 1

    Next i

 

End Sub

'====================================================================

 



Пишите - все вопросы обсуждаются.

Также имеется версия макроса, который может вставлять поясняющие картинки к тесту, формировать список вопросов согласно заданному распределению уровню сложности вопросов (как в ЕГЭ). Но это уже не бесплатно:)
Письма направлять сюда: apsheronka@mail.ru
Конструктор тестов

Макрос VBA из Excel в Access
Макрос VBA из RSS-ленты в Access
Макрос VBA из текстового файла в Access
Примеры макросов работы с Visio из под Access
Пример макроса для работы в Power Point
Главная (Апшеронск)



Рейтинг@Mail.ru


 
 
Апшеронск Спорт VBA Форекс Сочи-2014 Нейросети Студентам
Связь с Администратором сайта, E-mail: apsheronka@mail.ru
Апшеронск, Краснодарский край

Размещение рекламы на сайте
Карта сайта

При перепечатке материалов сайта http://apsheronsk.bozo.ru - обязательная активная гиперссылка на сайт!


`