PPT与Excel完美结合做练习
在PPT中,利用VBA能够轻松调取Excel中的数据,通过一张幻灯片就可以做若干习题。
在课堂上,许多老师都是用PPT进行课堂练习。一般情况下,有多少道练习题就用多少张幻灯片。这样的做法存一个弊端:就是要想将幻灯片中的试题修改成统一的字体或字号,需要一张一张地去修改。如果试题所用的幻灯片少了,这样的方法还行;但是,试想一下,有几十道、上百道练习题,如果要一张一张地修改,那实在是一件很麻烦、很费神的事。
今天,告诉你一个非常行之有效的方法:就是将你所需要的若干试题存放在一个Excel工作表中,然后在PPT中利用VBA读取Excel工作表中的数据到幻灯片中,这样只需要一张幻灯片就可以练习若干道习题了。要修改的话,只需要修改这一张幻灯片中的文本框就可以了。如果你想知道这种方法是怎么实现的,就请跟我来吧!
准备工作表和幻灯片
这个过程主要是准备好存放试题的Excel工作表和显示试题的幻灯片。
首先,准备好一个Excel文件,在Sheet*工作表中存放好所需要试题,并将这个Excel文件和PPT文件放在同一文件夹中。然后,打开PowerPoint 200*,插入一张空白幻灯片。在这张幻灯片中先插入两个文本框,它们的作用一个是用于存放试题题目,一个用于存放正确答案(在存放试题题目的文本框中可先输入一个提示性语句,在存放正确答案的文本框中可先输入一个空格)(图*)。
图*
最后,选择“幻灯片放映→动作按钮”菜单,在幻灯片的合适位置插入*个动作按钮。可右击相应的动作按钮为它们添加相应的文字(图2)。
图2
2
添加VBA代码
这个过程主要是编写控制Excel工作表和PPT幻灯片中文本框的VBA代码。
一提到编写代码,你可能就有些犯晕了。其实,程序代码也没那么神秘,在这里你可先将我的代码输入或复制到你的文件中,然后看看我给你的解释,一切就简单多了!
首先,我们选择“工具→宏→Visual Basic编辑器”菜单,这时就会弹出Microsoft Visual Basic程序窗口,也就是VBA的编辑器。选择“插入→模块”菜单,这时在右侧可以看到空白的代码编辑区域,我们可以尝试着输入图中代码(图*)。
图*
看着这些代码,你有些摸不着头脑了吧!没关系,你看看我给你解释解释,你就豁然开朗了。
在上述代码中,首先用Public定义了xlApp、xlBook、xlSheet、i这*个变量,前*个是用来控制Excel工作表的,i是用来表示当前Excel工作表中的行数的。
然后,用了*个“Sub…End Sub”定义了*个事件过程,VBA中的事件都是放在Sub和End Sub之间的,每个过程都有一个相应的名字,如打开题库、下一题等等。
现在我们来说明一下“打开题库”这个过程:
Set xlApp = CreateObject("Excel.Application")是用来建立一个Excel控件;
xlApp.Visible = False表示这个控件不可见,即隐藏Excel,不让它显示在当前窗口;
Set xlBook = xlApp.Workbooks.Open(CurDir + "\book*.xls")表示让Excel打开名字为book*.xls的文件,CurDir表示当前目录。
Set xlSheet = xlBook.Worksheets(*)表示把控制工作簿中的第*个工作表即Sheet*的权限赋给xlSheet。
ActivePresentation表示当前激活的演示文稿。
.Slides(*)表示演示文稿中的第*张幻灯片,.Shapes(*)表示幻灯片中的第*个文本框。
TextFrame.TextRange.Text则表示文本框中的文本。
我们把它们连接起来即
ActivePresentation.Slides(*).Shapes(*).TextFrame.TextRange.Text表示当前演示文稿中第*张幻灯片中第*个文本框的内容。
xlSheet.Range("a" i)表示Sheet*中单元格的值,现在i=*,就获取了A*单元格的值。
Replace函数的作用是替换,Chr(*0)代表换行符,Chr(**)代表回车符,Replace(xlSheet.Range("b" i), Chr(*0), Chr(**))就表示把B*单元格中的换行符替换成回车符。
“”这个符号起到连接的作用,可用来强制连接不同类型的值。
而整个语
ActivePresentation.Slides(*).Shapes(*).TextFrame.TextRange.Text = xlSheet.Range("a" i) "、" Replace(xlSheet.Range("b" i), Chr(*0), Chr(**))表示将工作表Sheet*中单元格A*的值加上“、”再加B*中将换行符替换成回车符后的值一起赋给幻灯片中的第一个文本框。
在“下一题”这个过程中,i=i+*表示将工作表中当前行下移一行,即现在是第*行,i+*后就可以取第*行的值了。这个过程应用了IF语句进行条件判断,判断是不是已到题库尾,如果xlSheet.Range("a" i) 的值不是空,就取相应的值赋给题目文本框;否则,用msgbox函数进行消息的提示。同时为了不提示显示正确答案,ActivePresentation.Slides(*).Shapes(2).TextFrame.TextRange.Text = " "表示让幻灯片中的第二个文本框即正确答案文本框显示为空格。
解释了这么多,这下你明白些了吧?那么其他的过程和它的意思都是大同小异的,你理解理解就明白了。
为按钮添加事件
这个过程主要是给各个按钮添加相应的事件,即过程。
比如我们给“正确答案”这个按钮添加事件,我们可以右击它,选择“动作设置”菜单,在弹出的“动作设置”窗口中选择“运行宏”,单击其右侧箭头选择相应的过程,最后点击“确定”即可。其他按钮事件的添加和它的道理一样的(图*)。
图*
激活VBA代码
要想使这些事件即VBA代码起作用,我们需要调整宏的安全性。选择“工具→宏→安全性”,把宏的安全性设置为“低”,这样你才能顺利的运行VBA代码(图*)。
图*
效果演示
以上的工作完成之后,我们就可以放映幻灯片了。
在使用时,我们先点击“打开题库”按钮,这时就会呈现出题库中的第*题,只有点击“正确答案”按钮时才会显示相应题目的正确答案;如果点击“下一题”按钮,题目就会进行切换,而下一题的正确答案也不会显示。
如果你觉得题目或是正确答案的字体、字号、颜色等不是太满意,你只需要设置相应的文本框格式就行了。
看看,这个方法是不是特别爽呀!使用这个方法,你有多少题都没关系的,还不赶快试试(图*)!
图*
*******************代码*************
Public xlApp, xlBook, xlSheet
Public i As Integer
Sub 打开题库
Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = False
Set xlBook = xlApp.Workbooks.Open(CurDir + "\book*.xls")
Set xlSheet = xlBook.Worksheets(*)
i = *
ActivePresentation.Slides(*).Shapes(*).TextFrame.TextRange.Text = xlSheet.Range("a" i) "、" Replace(xlSheet.Range("b" i), Chr(*0), Chr(**))
End Sub
Sub 下一题
i = i + *
If xlSheet.Range("a" i) "" Then
ActivePresentation.Slides(*).Shapes(2).TextFrame.TextRange.Text = " "
ActivePresentation.Slides(*).Shapes(*).TextFrame.TextRange.Text = xlSheet.Range("a" i) "、" Replace(xlSheet.Range("b" i), Chr(*0), Chr(**))
Else
MsgBox ("已到最后一题了!")
End If
End Sub
Sub 上一题
i = i - *
If xlSheet.Range("a" i) "" Or xlSheet.Range("a" i) "序号" Then
ActivePresentation.Slides(*).Shapes(2).TextFrame.TextRange.Text = " "
ActivePresentation.Slides(*).Shapes(*).TextFrame.TextRange.Text = xlSheet.Range("a" i) "、" Replace(xlSheet.Range("b" i), Chr(*0), Chr(**))
Else
MsgBox ("已是第一题了!")
End If
End Sub
Sub 正确答案
ActivePresentation.Slides(*).Shapes(2).TextFrame.TextRange.Text = xlSheet.Range("c" i)
End Sub
Sub 关闭题库
xlBook.Close (False)
xlApp.Quit
Set xlApp = Nothing
End Sub
来自:电脑爱好者
---END---
推荐↓↓↓