PPT操作题也能自动评分

马震安2014-08-06 08:51应用 标签:PPT

学生在课上做PPT操作题时,做得对与错不能及时反映出来一直是很多老师头疼的问题。经笔者研究发现,可以在PPT中借助VBA实现对操作题的自动评分,及时反映学生的掌握情况。

实例描述:在文件名为PPT1的演示中完成如下操作:⑴设置第一张幻灯片中图片的动画效果为“螺旋”,声音效果为“鼓掌”;⑵为第二张幻灯片的背景设置填充效果为“双色、纵向”;⑶设置第三张幻灯片的切换方式为“快速盒状展开”。

要求:在幻灯片中操作题目能够清楚显示,有“评分”按钮,并能自动反馈对答题结果的评价情况及具体分数。

实例分析:做PPT操作题目,实际上是对PPT演示文稿中每张幻灯片中对象的内部属性值进行设置,如幻灯片背景、动画效果、切换方式等。如果能够通过某种方法获取这些属性的变化情况或变化值,再借助VBA编程来做出判断就可以为PPT操作题目进行评分了。究竟这些属性的变化情况如何获取呢?让我们一起来做。

题目显示设计

这个过程主要完成如何在PPT的每张幻灯片中显示题目及评分按钮。

首先,打开PPT2003并新建一张空白幻灯片,选择“视图→母版→幻灯片母版”菜单,在幻灯片母版上插入一个文本框,其内容为实例描述中的题目。同时为了美观,可以对文本框进行“美化”修饰,右击该文本框边框选择“设置文本框格式”菜单,在弹出的窗口中,可以设置文本的边框颜色、粗细、填充颜色等等,还可以设置文本中文字的颜色、大小等等。

然后,选择“视图→工具栏→控件工具箱”菜单,在弹出的“控件工具箱”的工具栏中选择“命令”按钮,在母版的合适位置拖动鼠标画出一个按钮,右击这个按钮选择“属性”菜单,在它的属性窗口中,将Caption属性(即显示的标签)更改为“评分”,关闭属性窗口,最后关闭母版视图。

幻灯片及对象创建

这个过程主要完成的是创建学生的答题环境,即幻灯片中的对象素材。在这个演示文稿中创建三张空白幻灯片并在其中插入操作题目所需要的对象,如图片、文本框等等并将文件名保存为PPT1.PPT。注意不要插入过多,满足题目要求即可,以免给编写评分代码带来麻烦。

当然,如果有现成的PPT1演示文稿也可以直接打开它,对它的母版进行编辑,然后调整如每张幻灯片中对象的位置,使它们不要遮挡题目和按钮(图1)。

1308asw-自动评分 图1图1

编写评分过程

1. 设计评分结果窗体

首先,需要选择“工具→宏→Visual Basic编辑器”菜单就会弹出Microsoft Visual Basic程序窗口,也就是VBA的编辑器。在窗口左侧可以看到“工程”和“属性”面板,右侧则是代码编辑区域。如果没有这些窗口,可以选择“视图”菜单来调出这些窗口,并且可以拖这些窗口的边框将窗口放大或是缩小。

接下来,在这个窗口中选择“插入→用户窗体”菜单,这时在右侧窗口就会插入一个窗体,同时也会弹出一个标签为“工具箱”工具栏,调整好窗体大小,在“属性”窗口将窗体的Caption属性即标题设置为“评分结果”。

在“工具箱”工具栏上选择“标签”按钮,在窗体上画出4个标签控件,选择窗体上的各个标签控件,在“属性”窗口分别设置它们的Font、ForeColor属性为所需要的值(图2)。

1308asw-自动评分 图2图2

2. 编写评分相关代码

这个过程主要完成利用VBA的编辑器来编写评分程序,即通过VBA来获取幻灯片中对象的属性值并判断这个值与正确答案的值是否一致,如果一致就对否则就错。

首先,双击窗体控件在弹出的代码窗口中选择窗体的Activate属性,在窗体的UserForm_Activate过程中输入图中代码(图3)。

1308asw-自动评分 图3

 图3

在这段代码中首先用变量fen来记录得分多少,用变量tsh保存评分的详细过程。ActivePresentation表示当前激活的演示文稿,.Slides(1)表示第1张幻灯片,.Slides(2)就表示第2张幻灯片,.Shapes(2)表示幻灯片中的第2个对象元素,.AnimationSettings.EntryEffect表示幻灯片中对象元素的特殊动画效果,.SoundEffect表示声音效果,.Background.Fill.GradientColorType表示对象背景填充的过渡颜色类型,.Background.Fill.GradientStyle表示对象背景填充的过渡样式,.SlideShowTransition代表指定幻灯片切换的特殊效果。Label1.Caption = tsh表示标签1所要显示的提示信息是变量tsh的内容。解释了这么多,这下你明白些了吧?

小技巧:也许你要问又怎么知道某个元素的属性是什么呢?每个属性的代码又是什么呢?有关幻灯片中对象元素的属性,你可以下载Microsoft PowerPoint Visual Basic参考手册来查看幻灯片中对象元素属性的详细说明。至于如何才能知道操作题目中有关对象设置的正确答案,你可以先按正确的操作做一遍题,接下来在VBA编辑器中用msgbox()函数来显示有关对象属性值,这个属性值就是所要的答案,然后用if判断语句对照正确答案进行判断就可以了。比如,笔者把实例中的题按正确的操作做了一下,要查看第一张幻灯片中图片的动画效果的正确值,可以选择“插入→模块”菜单,在右边的代码区用msgbox(ActivePresentation.Slides(1).Shapes(2) .AnimationSettings.EntryEffect)来显示动画效果的值,从而知道了正确操作的情况下这个图片动画效果的值是3357,然后在用VBA代码评分时,就可以用if语句进行判断了。

3. 让“评分”按钮发生作用

这个过程主要是让“评分”按钮来显示“评分结果”窗体。当单击“评分”按钮时,它是能够调出“评分结果”窗体,并显示结果。

首先,“视图→母版→幻灯片母版”菜单,在母版视图状态下双击“评分”按钮,在它的Click事件下输入UserForm1.Show代码,UserForm1是窗体的名字,.Show表示显示窗体(图4)。

1308asw-自动评分 图4

图4

这就是当单击“评分”按钮后显示“评分结果”窗体。最后退出母版视图状态。

实现学生自动评分

通过网络教室的软件把这个PPT1文件发送给学生,为了能够使VBA代码起作用,还需要求学生设置本机PPT宏的安全性,需要选择“工具→宏→安全性”,在弹出的窗口中将宏的安全性设置为“低”,保存后,再次打开,这样才能够使VBA代码顺利运行。学生按照题目操作完后并放映幻灯片,在放映的过程中点击“评分”按钮就能自动评分了(图5)。

1308asw-自动评分 图5图5

附录:文中相关代码

Private Sub UserForm_Activate()
'对第一题评分
fen = 0
Set tmp = ActivePresentation.Slides(1).Shapes(2)
If tmp.AnimationSettings.EntryEffect = 3357 Then
tsh = "第一张幻灯片中图片动画效果设置正确;"
fen = fen + 1
If tmp.AnimationSettings.SoundEffect.Type = 2 Then
If tmp.AnimationSettings.SoundEffect.Name = "applause.wav" Then
tsh = tsh + "声音设置正确;"
fen = fen + 1
Else
tsh = tsh + "声音设置错误;"
End If
Else
tsh = tsh + "声音设置错误;"
End If
Else
tsh = "第一张幻灯片中图片动画效果设置错误;"
End If
Label1.Caption = tsh
'对第二题评分
Set tmp = ActivePresentation.Slides(2)
If tmp.Background.Fill.GradientColorType = 2 Then
tsh = "第二张幻灯片的背景设置正确;"
fen = fen + 1
If tmp.Background.Fill.GradientStyle = 2 Then
tsh = tsh + "方向设置正确;"
fen = fen + 1
Else
tsh = tsh + "方向设置错误;"
End If
Else
tsh = "第二张幻灯片的背景设置错误;"
End If
Label2.Caption = tsh
'对第三题评分
Set tmp = ActivePresentation.Slides(3)
If tmp.SlideShowTransition.EntryEffect = 3073 Then
tsh = "第三张幻灯片的切换方式设置正确;"
fen = fen + 1
If tmp.SlideShowTransition.Speed = 3 Then
tsh = tsh + "切换速度正确;"
fen = fen + 1
Else
tsh = tsh + "切换速度错误;"
End If
Else
tsh = "第三张幻灯片的切换方式设置错误;"
End If
Label3.Caption = tsh
Label4.Caption = "满分是6分,你的最后得分是:" & fen
End Sub