user_jugqgfzh 发表于 2009-9-16 11:31:00

word vba 试卷

我想用 word VBA 制作一份1o道选择题,10道填空题的试卷,每道题5分,共100分。
要求: 输入名字、班别的文本框;
单选题得分;
填空题得分;
总分;
单选题答对情况反馈
填空题答对情况反馈
点击上面按钮后,能自动得分。

calmsolemn 发表于 2009-9-16 13:47:57

第一步:新建一个PowerPoint文档,命名为“考卷”保存;选择一个空白版式幻灯片,在菜单项“视图工具栏Visual BASIC”调用Visual BASIC工具栏,并在这个工具栏中调出“控件工具箱”,使用“控件工具箱”中的工具“命令按钮”制作“姓名输入”按钮,即用鼠标点选“控件工具箱”中的“命令按钮”,并在空白幻灯片上拖出一个“CommandButton1”,点鼠标右键在“CommandButton1”的属性框中把它的Caption(标题)属性改为“姓名输入”;在这个按钮的下方用插入文本框输入第1题题目;再点选“控件工具箱”中的“选项按钮”制作选择答案A,复制粘贴这个选项按钮三次得到四个选项按钮,分别它们的属性框中修改各个按钮的Caption属性,得到B、C和D答案选项,并在下方加入一个动作按钮,为的是链接到下一题。
第二步:为了能记录考生做各个题目的答案和统计其得分,要定义公用变量和数组,双击“输入姓名”按钮进入VBA代码编写窗口,选择菜单项“插入模块”,在模块编辑窗口输入代码:
public xm as string
public aw(50) as string
public sm(50) as integer
其中xm变量用于记录考生姓名,数组aw(50)用于记录考生各题所选择的答案,sm(50)数组用于记录各个答案的得分。这里设置的数组上界是50,如果题目更多,可加大这个上界。
用InputBox()函数记录考生输入的姓名,输入代码:
Private Sub CommandButton1_Click()
xm = InputBox(输入考生姓名...)
End Sub
第三步:为每题目的各个答案输入记录答案和得分代码,双击答案A选项按钮,输入代码,其中aw(1)用于记录第1题答案,sm(1)用于记录第1题得分,答案B中的sm(1)=2表示它是正确答案,选择这个答案得2分,其它答案得0分。到这里,试卷的考生姓名输入和第一题就做好了,接着插入一张空白幻灯片做第二题,除了不用“姓名输入”按钮外,其它的制作过程与第一张类似,只要改变题目内容,答案记录用aw(2),得分记录用sm(2)即可,依此类推,其它各题幻灯片类似制作。
第四步:制作交卷按钮:在最后一题的幻灯片中加入一个“交卷”按钮,双击这个按钮,输入如下代码:
Private Sub CommandButton1_Click()
Dim i, j, s, nf As Integer
nf = FreeFile
s = 0
For i = 1 To 50    ’累加各题得分。
   s = s + sm(i)
Next
Open xm & .txt For Append As nf   ’用输入的姓名作文件名,在当前文件夹中建立一个文本文件。
For j = 1 To 50    ’把各个题号和所选择的答案按顺序写入到这个文本文件中去。
    Print #nf, Str(j) & aw(j);
Next j
   Print #nf, Str(s)    ’把得分写入到这个文本文件的最后。
Close nf
End Sub
这段代码使用VBA的文本文件功能,记录考生各个题目所选择的答案,并累计得分,实现自动改卷,其中语句后面的解释部份可不用输入;如果要把记录答案和得分的文本文件保存的指定的文件夹中,只要把其中建立文本文件的Open语句加上相应路径即可,例如“Open d:test & xm & .txt For Append As nf ”可在D盘的test文件夹中建立这个文本文件。最后,为了防止考生使用幻灯片考卷时看到其中的代码,在代码编写视图下选择菜单项“视图工程资源管理器”,用鼠标右键点“VBAProject(考卷)”,在其属性对话框中选择“保护”标签选项输入密码实现密码保护。
至此考卷制作完成,使用时考生在PowerPoint中打开这个“考卷.ppt”文件,按F5键放映浏览各题的幻灯片,点选各题所选择的答案按钮,完成后按“交卷”按钮。考生交卷后,教师打开上述Open语句指定文件夹中以考生姓名作文件名的文本文件,其中记录有考生的各题答案和考试得分。

页: [1]
查看完整版本: word vba 试卷