返回首页
当前位置: 主页 > 精通Office > PowerPoint教程 >

PPT与Excel完美结合做练习

时间:2015-05-28 09:18来源:2018年最新注册送彩金www.zhixing123.cn 编辑:麦田守望者

PPT中,利用VBA能够轻松调取Excel中数据,通过一张幻灯片就可以做若干习题。

在课堂上,许多老师都是用PPT进行课堂练习。一般情况下,有多少道练习题就用多少张幻灯片。这样的做法存一个弊端:就是要想将幻灯片中的试题修改成统一的字体或字号,需要一张一张地去修改。如果试题所用的幻灯片少了,这样的方法还行;但是,试想一下,有几十道、上百道练习题,如果要一张一张地修改,那实在是一件很麻烦、很费神的事。

笔者经过不断研究,终于想到了一个非常行之有效的方法:就是将你所需要的若干试题存放在一个Excel工作表中,然后在PPT中利用VBA读取Excel工作表中的数据到幻灯片中,这样只需要一张幻灯片就可以练习若干道习题了。要修改的话,只需要修改这一张幻灯片中的文本框就可以了。如果你想知道这种方法是怎么实现的,就请跟我来吧!

准备工作表和幻灯片

这个过程主要是准备好存放试题的Excel工作表和显示试题的幻灯片。

首先,准备好一个Excel文件,在Sheet1工作表中存放好所需要试题,并将这个Excel文件和PPT文件放在同一文件夹中。然后,打开PowerPoint 2003,插入一张空白幻灯片。在这张幻灯片中先插入两个文本框,它们的作用一个是用于存放试题题目,一个用于存放正确答案(在存放试题题目的文本框中可先输入一个提示性语句,在存放正确答案的文本框中可先输入一个空格)(图1)。

1224asw-做练习图1

最后,选择“幻灯片放映→动作按钮”菜单,在幻灯片的合适位置插入5个动作按钮。可右击相应的动作按钮为它们添加相应的文字(图2)。

1224asw-做练习图2

添加VBA代码

这个过程主要是编写控制Excel工作表和PPT幻灯片中文本框的VBA代码。

一提到编写代码,你可能就有些犯晕了。其实,程序代码也没那么神秘,在这里你可先将我的代码输入或复制到你的文件中,然后看看我给你的解释,一切就简单多了!

首先,我们选择“工具→宏→Visual Basic编辑器”菜单,这时就会弹出Microsoft Visual Basic程序窗口,也就是VBA的编辑器。选择“插入→模块”菜单,这时在右侧可以看到空白的代码编辑区域,我们可以尝试着输入图中代码(图3)。

1224asw-做练习图3

看着这些代码,你有些摸不着头脑了吧!没关系,你看看我给你解释解释,你就豁然开朗了。

在上述代码中,首先用Public定义了xlApp、xlBook、xlSheet、i这4个变量,前3个是用来控制Excel工作表的,i是用来表示当前Excel工作表中的行数的。

然后,用了5个“Sub…End Sub”定义了5个事件过程,VBA中的事件都是放在Sub和End Sub之间的,每个过程都有一个相应的名字,如打开题库()、下一题()等等。

现在我们来说明一下“打开题库()”这个过程:

Set xlApp = CreateObject("Excel.Application")是用来建立一个Excel控件;

xlApp.Visible = False表示这个控件不可见,即隐藏Excel,不让它显示在当前窗口;

Set xlBook = xlApp.Workbooks.Open(CurDir() + "\book1.xls")表示让Excel打开名字为book1.xls的文件,CurDir()表示当前目录。

Set xlSheet = xlBook.Worksheets(1)表示把控制工作簿中的第1个工作表即Sheet1的权限赋给xlSheet。

ActivePresentation表示当前激活的演示文稿。

.Slides(1)表示演示文稿中的第1张幻灯片,.Shapes(1)表示幻灯片中的第1个文本框。

.TextFrame.TextRange.Text则表示文本框中的文本。

我们把它们连接起来即ActivePresentation.Slides(1).Shapes(1).TextFrame.TextRange.Text表示当前演示文稿中第1张幻灯片中第1个文本框的内容。

xlSheet.Range("a" & i)表示Sheet1中单元格的值,现在i=3,就获取了A3单元格的值。

Replace函数的作用是替换,Chr(10)代表换行符,Chr(13)代表回车符,Replace(xlSheet.Range("b" & i), Chr(10), Chr(13))就表示把B3单元格中的换行符替换成回车符。

“&”这个符号起到连接的作用,可用来强制连接不同类型的值。

而整个语句ActivePresentation.Slides(1).Shapes(1).TextFrame.TextRange.Text = xlSheet.Range("a" & i) & "、" & Replace(xlSheet.Range("b" & i), Chr(10), Chr(13))表示将工作表Sheet1中单元格A3的值加上“、”再加B3中将换行符替换成回车符后的值一起赋给幻灯片中的第一个文本框。

在“下一题()”这个过程中,i=i+1表示将工作表中当前行下移一行,即现在是第3行,i+1后就可以取第4行的值了。这个过程应用了IF语句进行条件判断,判断是不是已到题库尾,如果xlSheet.Range("a" & i) 的值不是空,就取相应的值赋给题目文本框;否则,用msgbox()函数进行消息的提示。同时为了不提示显示正确答案,ActivePresentation.Slides(1).Shapes(2).TextFrame.TextRange.Text = " "表示让幻灯片中的第二个文本框即正确答案文本框显示为空格。

解释了这么多,这下你明白些了吧?那么其他的过程和它的意思都是大同小异的,你理解理解就明白了。

为按钮添加事件

这个过程主要是给各个按钮添加相应的事件,即过程。

比如我们给“正确答案”这个按钮添加事件,我们可以右击它,选择“动作设置”菜单,在弹出的“动作设置”窗口中选择“运行宏”,单击其右侧箭头选择相应的过程,最后点击“确定”即可。其他按钮事件的添加和它的道理一样的(图4)。

1224asw-做练习图4

激活VBA代码

要想使这些事件即VBA代码起作用,我们需要调整宏的安全性。选择“工具→宏→安全性”,把宏的安全性设置为“低”,这样你才能顺利的运行VBA代码(图5)。

1224asw-做练习图5

效果演示

以上的工作完成之后,我们就可以放映幻灯片了。

在使用时,我们先点击“打开题库”按钮,这时就会呈现出题库中的第1题,只有点击“正确答案”按钮时才会显示相应题目的正确答案;如果点击“下一题”按钮,题目就会进行切换,而下一题的正确答案也不会显示。

如果你觉得题目或是正确答案的字体、字号、颜色等不是太满意,你只需要设置相应的文本框格式就行了。

看看,这个方法是不是特别爽呀!使用这个方法,你有多少题都没关系的,还不赶快试试(图6)!

1224asw-做练习图6

*******************代码*************

Public xlApp, xlBook, xlSheet

Public i As Integer

Sub 打开题库()

Set xlApp = CreateObject("Excel.Application")

xlApp.Visible = False

Set xlBook = xlApp.Workbooks.Open(CurDir() + "\book1.xls")

Set xlSheet = xlBook.Worksheets(1)

i = 3

ActivePresentation.Slides(1).Shapes(1).TextFrame.TextRange.Text = xlSheet.Range("a" & i) & "、" & Replace(xlSheet.Range("b" & i), Chr(10), Chr(13))

End Sub

Sub 下一题()

i = i + 1

If xlSheet.Range("a" & i) <> "" Then

ActivePresentation.Slides(1).Shapes(2).TextFrame.TextRange.Text = " "

ActivePresentation.Slides(1).Shapes(1).TextFrame.TextRange.Text = xlSheet.Range("a" & i) & "、" & Replace(xlSheet.Range("b" & i), Chr(10), Chr(13))

Else

MsgBox ("已到最后一题了!")

End If

End Sub

Sub 上一题()

i = i - 1

If xlSheet.Range("a" & i) <> "" Or xlSheet.Range("a" & i) <> "序号" Then

ActivePresentation.Slides(1).Shapes(2).TextFrame.TextRange.Text = " "

ActivePresentation.Slides(1).Shapes(1).TextFrame.TextRange.Text = xlSheet.Range("a" & i) & "、" & Replace(xlSheet.Range("b" & i), Chr(10), Chr(13))

Else

MsgBox ("已是第一题了!")

End If

End Sub

Sub 正确答案()

ActivePresentation.Slides(1).Shapes(2).TextFrame.TextRange.Text = xlSheet.Range("c" & i)

End Sub

Sub 关闭题库()

xlBook.Close (False)

xlApp.Quit

Set xlApp = Nothing

End Sub

顶一下
(4)
100%
踩一下
(0)
0%
标签(Tag):PowerPoint技巧 ppt技巧 ppt PowerPoint教程 幻灯片 poweroint poweroint技巧 PPT模板
------分隔线----------------------------
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
验证码:点击我更换图片
博聚网