PDA

View Full Version : cách trộn đề thi trong word



thanhhaf
14-06-2007, 20:07
ai biết cách trộn đề thi trong phần mềm microsoft word xin chỉ giúp

cảm ơn nhiều

thanh_nhan93
05-11-2009, 19:55
ai biết cách trộn đề thi trong phần mềm microsoft word xin chỉ giúp

cảm ơn nhiều rước tiên ta phải cài đặt macro ở trong word

I. Cài đặt Macro.
Bước 1: Trên thanh công cụ vào Tools\Macro\Record new macro để xuất hiện hộp thoại record macro
Đặt tên macro rồi nháy OK.
Bước 2: Trên thanh công cụ Tools\Macro\StopRecording
Bước 3: Nháy chọn Tools\Macro\macros để mở hộp thoại:Macros
Ta nháy chuột chọn nút Create để xuất hiện khung soạn thảo macro.Tại khung soạn thảo ta soạn đoạn mã sau vào thân chương trình macro.
Code:
"n = Selection.Tables(1).Rows.Count
For i = n To 1 Step -1
a = Int(ActiveDocument.Tables(1).Rows.Count * Rnd + 1)
Selection.Tables(1).Rows(a).Select
Selection.Cut
Selection.EndKey Unit:=wdStory
Selection.Paste
Next i

For i = 1 To n
Selection.Tables(1).Rows(i).Select
Selection.HomeKey Unit:=wdLine
Selection.Find.ClearFormatting
With Selection.Find
.Text = ":"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute
Selection.MoveLeft Unit:=wdCharacter, Count:=1
Selection.HomeKey Unit:=wdLine, Extend:=wdExtend
a = Selection.Characters.Count
Selection.HomeKey Unit:=wdLine
Selection.MoveRight Unit:=wdCharacter, Count:=4
If a = 6 Then
Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
Selection.Delete Unit:=wdCharacter, Count:=1
Else
Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
Selection.Delete Unit:=wdCharacter, Count:=1
End If
Selection.HomeKey Unit:=wdLine
Selection.MoveRight Unit:=wdCharacter, Count:=3
Selection.TypeText Text:=" "
Selection.TypeText Text:=i
Next i

For i = 1 To n
Selection.Tables(1).Rows(i).Select
a = Selection.Paragraphs.Count
m = a - 1 - Int((Rnd * 3) + 1)
Selection.Paragraphs(m).Range.Cut
Selection.Tables(1).Rows(i).Select
Selection.EndKey Unit:=wdLine
Selection.TypeParagraph
Selection.Paste
For j = 2 To 5
Selection.Tables(1).Rows(i).Select
b = Selection.Paragraphs.Count
y = b - j
Selection.Paragraphs(y).Range.Select
Selection.HomeKey Unit:=wdLine
Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
Selection.Delete Unit:=wdCharacter, Count:=1
Select Case j
Case 2
z = "D"
Case 3
z = "C"
Case 4
z = "B"
Case 5
z = "A"
End Select
Selection.TypeText Text:=z
Next j
Selection.Tables(1).Rows(i).Select
Selection.EndKey Unit:=wdLine
Selection.TypeBackspace
Next i"

II. Soạn đề.
Trên word tạo 1 bảng gồm 1 cột, n hàng. soạn đề trắc nghiệm trên word sao cho mỗi câu nằm trong 1 ô. Và đánh dấu * vào cuối phương án đúng, mỗi phương án nằm trên 1 dòng.
Ví dụ:

Câu 1. Trong ngôn ngữ lập trình Pascal, cách khai báo xâu ký tự nào sau đây là đúng?
A. Var S: File of String;
B. Var S: array[1..256] of char;
C. Var S: File of Char;
D. Var S: String;*
Câu 2. Trong ngôn ngữ lập trình Pascal, về mặt cú pháp câu lệnh nào sau đây là đúng?
A. Type mang1c = array[1..100] of char;*
B. Type mang1c = array(1..100) of char;
C. Type mang = array[1 - 100] of char;
D. Type 1chieu = array[1..100] of char;
III. Trộn đề.
Nháy chọn Tools\macro\Macros để hiện hộp thoại như hình 3. Nháy chuột chọn nút RUN.
* Một số lưu ý.
- Chương trình chỉ trộn được vị trí các câu và vị trí các phương án đúng. Sau khi trộn xong đề thì bỏ dấu * ở các phương án đúng.
- Khi chạy Macro, macro sẽ thay đổi nội dung đề gốc do vậy cần lưu lại 1 đề gốc.
- Ở bước soạn đề sau khi tạo ra bảng để soạn, ta làm mờ đường viền của bảng, vì chương trình dựa vào bảng để trộn đề.
Bổ sung một đoạn mã Macro (VBA) trong Word, khi soạn đề các bạn không cần phải tạo 1 bảng gồm 1 cột, n hàng. Cứ soạn bình thường không có bảng trong Word. Sau khi soạn xong bạn chạy đoạn mã Macro dưới đây thì tất cả đề thi sẽ được chèn vào trong bảng.
Lưu ý: Trong đề thi bạn không được sử dụng phím Tab.
"Sub Chen_De_Vao_Bang()
Dim tailieu As Document
Dim dong As Range
Dim demdong As Long
Dim demtruong As Long

Set tailieu = ActiveDocument
Set dong = tailieu.Range
demdong = 1
demtruong = 1
With dong

.ConvertToTable Separator:=wdSeparateByTabs, NumColumns:=demtruong, NumRows:=demdong
With .Tables(1)
.Columns(1).Width = InchesToPoints(7.36)

End With
End With
With ActiveDocument.PageSetup
.LeftMargin = InchesToPoints(0.49)
.RightMargin = InchesToPoints(0.49)
End With
End Sub "
Cách sử dụng:
Trong file đề thi nhấn phím: Alt+F11; nếu chưa có cửa sổ soạn thảo VBA thì nhấn F7.
Dán đoạn mã trên ( Từ đoạn Sub Chen_De_Vao_Bang() đến đoạn End Sub) vào khung soạn thảo.
Nhấn phím F5 là chạy mã VBA (macro) thực hiện.
Bàn thêm: Tôi viết phần mềm trắc nghiệm thì không thực hiện soạn đề trong bảng như các phần mềm Test Pro…gây khó khăn cho người soạn đề.
Việc làm mờ đường viền của bảng có thể thực hiện thủ công hoặc tự động bằng cách thêm mã VBA vào đoạn mã trên

nguyenvantoam
28-09-2010, 10:19
Bài nay rất lâu rồi nhưng bây giờ nó rất co ý nghĩa với mình. Thank nha