当前位置:首页 > 软件 > 正文内容

PPT与Excel完美结合做练习

泸州印刷厂家l3年前 (2022-10-12)软件37
印刷厂直印●彩页1000张只需要69元●名片5元每盒-更多报价➦联系电话:138-1621-1622(微信同号)

在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---

推荐↓↓↓

收藏0

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。