• PPT数据通信之—Excel篇

    日期:2009-08-26 | 分类:VBA

    VBA的地位好像很尴尬,高手们不屑,一般用户不会。我对VBA也并不精通,以前写过一篇介绍一个公司做的PPT与其他文件交换数据的文章。使我对PPT和Excel,word,Access,TXT之间的数据通信很感兴趣,这些数据之间通信的应用是否有实际用处?我也不知道,今天开始陆续将摸索的一些方法以范例方式弄出来,先是PPT和Excel数据通信的例子,希望有高手进一步完善。

    简要代码:
    打开Excel=================================
    Dim ExcelApp As Excel.Application
    Dim ExcelBook As Excel.Workbook
    Dim ExcelSheet As Excel.Worksheet
    Set ExcelApp = CreateObject("Excel.Application")
    Set ExcelBook = ExcelApp.Workbooks.Add
    ExcelFilePath = Application.ActivePresentation.Path & "\" & "ExcelFileName"
    '使用相对路径要比绝对路径好
    ExcelApp.Workbooks.Open ExcelFilePath, ReadOnly:=False
    Set ExcelBook = ExcelApp.Workbooks("ExcelFileName")
    Set ExcelSheet = Excel.Worksheets(n)
    '(n=1...工作表)

    关闭Excel=====================
    If Not (ExcelBook Is Nothing) Then ExcelBook.Close
    If Not (ExcelApp Is Nothing) Then ExcelApp.Quit
    Set ExcelBook = Nothing
    Set ExcelSheet = Nothing
    Set ExcelApp = Nothing
    ===========================

    代码很简单,示例也是简单的说明问题,在此基础上应该可以做出很多应用个变化,抛砖引玉,希望你能做出更多的东西和我们分享。

    下载在这里

  • 上帝的名字叫浏览器

    日期:2009-03-23 | 分类:VBA

    看过很多用PPT做的网站推广方案,大多会用网站界面截图来介绍网站,再高级一点的,用动画来演示界面,当时就想,为什么不直接在PPT上动态的显示网页呢?所谓百闻不如一见,百见不如一操,嘿!这个操是操作的操而已。

    基础知识
    PPT中自带有浏览器的控件,叫做“Microsoft Web 浏览器”

    在PPT中插入浏览器也相当的简单,直接将浏览器控件拖到PPT中,调整好大小就可以了。

    控件都有属性,所谓属性,就是比如:姓名:大乘起信;性别:男;头发长短:长......有些属性可以改变,比如我昨天就把头发剃得象刚放出来,那么头发长短的属性就改成了:极短。而有些属性一般是不可以改,比如性别,除非......

    查看和修改属性的方法:选中控件,鼠标右键--属性

    浏览器如何解析网页地址?抱歉,在这个web控件的属性中,没有直接输入地址的(我用的是2003,2007不知道),要想控件能帮你打开网页,还需要执行一个语句:

    WebBrowserName.Navigate "pptdesign.blogbus.com", 0, 0, 0, 0

    其中WebBrowserName可以改成你自己定义的控件名称,引号内的地址当然也可以改成你自己的。这个语句可加在一个执行动作中,比如点击按钮就执行这个语句,那么浏览器就会帮你打开网页了。假设我们在PPT上创建一个按钮,它的名字叫”GoBtn",创建一个浏览器控件,它的名称为“WebBro”,然后在按钮的单击事件上写上上面的语句,(怎样加代码?选中控件,鼠标右键--查看代码)整个代码非常简单,应该是这样的:

    Private Sub GoBtn_Click()
    WebBro.Navigate "pptdesign.blogbus.com", 0, 0, 0, 0
    End Sub

    放映PPT,单击按钮,浏览器成功打开网页。

    上面这段文字写得好累,我真的很不喜欢写这样教程性的东西,这篇文章的目的也不是说怎样在PPT中插入浏览器控件,而是这个浏览器控件的实际应用探讨,好了,我们步入正题吧。

    进阶篇
    显然,上面在基础知识中介绍的方法有很大的局限性,网页地址是固定的,如果要更改网页难道在放映的时候还要停下来,然后转到vb编辑器中去修改代码?我们稍微修改一下,在PPT中增加一个文本框的控件,并把这个文本框的名字属性设为“”WebAdd",其他不变,整个界面好像这样:

    然后将按钮单击事件的代码稍微改一下:


    Private Sub GoBtn_Click()
    WebBro.Navigate Trim(WebAdd.Text), 0, 0, 0, 0
    End Sub


    只是将原来固定的网页地址改成读取文本框中我们自己输入的网页地址而已,这样就灵活很多了。关于web浏览器的控件使用就介绍到这里了,有兴趣的可以继续扩展。

    ===============================================================

    这样一个浏览器控件的功能我们有什么用呢?回到我们的题目,上帝的名字叫浏览器,或许你不相信,但事实上没有了浏览器我们能做什么?我们的资源管理器其实也是基于浏览器的,可以说浏览器掌控着一切,在web时代更是如此。在PPT中,我们试着举一个例子:浏览器不但能打开网页,而且可以打开本地文件!

    在PPT中播放另一个PPT:只要在进阶篇中提到的文本框中输入本地的另一个PPT文档地址

    大凡你可以想到的,浏览器都可以帮你打开,word文档,Excel,直接调用flash,.......只要是浏览器支持的类型,我想这个对于老师们做课件将会非常方便并且资源会丰富很多。

    总结:
    浏览器控件可以动态的直接打开网页:这丰富了我们的表现手段
    浏览器控件可以直接打开本地文件:这为我们增加各种应用提供了无穷的想象空间。

    自己动手做:
    如果将文本框输入地址改成下拉列表地址会怎么样?

    欢迎到我们的google论坛中来讨论!

    无实例无真相

  • Flash与PPT的交互

    日期:2009-02-08 | 分类:VBA


    如果将PPT看作是一个容器或者载体,就可以在PPT中加载很多东西,比如视频,声音或者Flash。其中能够插入Flash是一个很激动人心的功能。关于在PPT中如何插入Flash,并不是本文要探讨的内容。人有时候就是这样,在得到一些后,总想得到更多。如果仅仅是单纯的插入Flash,总觉得不够。Flash最擅长的就是交互,如果Flash能后PPT交互该多好!想象一下,各种效果漂亮的Flash按钮在PPT中能直接操控,执行各类动作,就象是ppt自己的按钮一样,那是如何的舒服。
    能不能达到这个要求呢?答案是肯定的,在参考研究了一些案例后,将我自己摸索的经验分享如下:

    解决问题的思路是很重要的,我们来想一下:
    如果要Flash和PPT交互,第一当然是要Flash发出命令,然后PPT能接收到这些命令,跟着执行相关动作。
    思路清晰后,问题就变得简单了。

    我们先来解决第一个问题:Flash如何能发出命令并让外部程序接收命令?这个相对简单,Flash中本身就有一条命令专门发送给外部程序的:fscommand,比如在Flash按钮动作中加上如下代码:

    ======================
    on (release){
    fscommand("a2");
    }
    ======================
    这是一段非常简单的代码,对FLASH稍微有点理解的人都知道。这样点击这个Flash按钮的时候,Flash就会向外部程序发送一个信号,信号的名字是a2,这个a2可以是你任意的字符串,这个就不多说了。

    接着解决第二个问题:要PPT能接收这个“a2“信息并作出处理。
    PPT中自带的falsh控件Shockwave Flash object,这个控件有其中一个方法FSCommand就是用来接收Flash发出的命令,真是太好了!接下来的事情就好办了。在这个方法中写下代码做接收和处理就行了,大致如下:

    ==============================
    Private Sub ShockwaveFlash_FSCommand(ByVal command As String, ByVal args As String)
    Select Case command
        Case "a1"  '如果falsh发出的名利是a1
                        '这里写PPT要做的动作
         Case "a2" 如果falsh发出的名利是a1
                        '这里写PPT要做的动作
          .......
         End Select
         End Sub
    ==============================
    到这里,问题基本解决了,PPT已经能读懂Flash的话了,并且可以执行交互,基本应用没有什么问题了,看来也不是太难。

    但是,在摸索的过程中还有一些问题是没有解决的:
    1.上述办法是针对PPT自带的flash插件Shockwave Flash object的,而我们喜欢用的另一个插件Flash Movie并没有提供任何可以编程的方法,也就是说用Flash Movie插入的Flash用上述方法不能和PPT交互。
    2.在应用某些功能,比如PPT导航播放时,在我实际的测试中有时候会发生错误,是PPT本身的BUG还是什么,不知道。
    3.当把Flash嵌入到PPT中的时候,交互就失效了。所以一定要把Flash文件放在外部,虽然问题不大,但毕竟不方便。

    这篇文章纯粹是技术帖,写出来的目的是我查了很多资料,几乎没有关于这类的探讨,好像是在黑暗中摸索,希望能有更多的爱好者和技术牛人指点,有更多的方法使Flash和PPT的交互更成熟可靠。

    单纯的在PPT中插入一个Flash,意义实在不大,而一旦Flash能和PPT交互,那将是一个新世界。

    惯例,提供一个测试文件,代码都在里面,希望有更多的人来关注这一部分。

    下载

  • 用PPT做个图片展示系统

    日期:2008-05-30 | 分类:VBA

    上次我们说了用插入PowerPoint对象的方法做画中画的效果,很简单。但用VBA做效果会更好。喂,不要我一说VBA你就走开嘛,其实VBA也很简单,如果你以前没有接触过VBA,不妨从这篇文章开始了解它,熟悉它,掌握它,说句夸张一点的话,不懂一点VBA,你都不好意思跟人家说你会PPT。:)我保证讲得通俗易懂,我的一位朋友说过,如果你不能将一个技术讲得很通俗,那说明你自己还没有掌握这门东西。所以如果你看了还是不明白,那是我的问题。


    先来说点基本知识:
    1.什么是VBA?
    VBA是微软专门为OFFICE开发的一个自动化语言。什么是自动化语言?就是你想要OFFICE程序比如PPT做一个什么事情,你不能象我们平时说话那样,“唉,那个PPT,帮我把这张图片放大一倍“,PPT听不懂,必须得用它听得懂的语言跟它说,它才帮你做事。所以我们想要跟PPT对话,得先学习它的语言,这个语言的名字就叫做VBA。跟学习英语一样,VBA也有自己的语法什么的,但是英语8级你都可以考过,VBA算什么,它用到的关键字还不到几百个,常用的也就这么几十个,比起英语来拿简直太小儿科了,而且还不用开口讲。

    2.VBA写在哪里?
    既然不用开口讲,那就只能书面交流了。你要把你说的话写在哪里呢?我们先新建一个PPT,在第一个页面,注意是第一个页面状态下,选择菜单--视图--工具栏--控件工具箱,把控件工具箱调出来,上面有很多东东,不管它了,以后慢慢研究。先单击按钮,在PPT上再单击一下,页面上就多了个按钮出来。选中它按鼠标右键,选查看代码,跳出了一个窗口,在窗口的左边,你应该用看到”VBAProject(演示文稿1)“这样一个东西,下面还有一个Slide1这样的字眼,双击Slide1,右边空白的地方就是写VBA的留言板了。当然这样的方法不是正规的,但很直观。在VBA中,Slide1的意思就是该PPT第一页,同理Slide2就是第二页。所以在Slide1中写VBA,PPT只会在第一页中帮你做事,到第二页就不灵了。如果你想在所有PPT的页面中你的命令全部有效,那得插入模块,在模块中写,但我们今天做的这个东西偏偏就只有一页,所以不用管模块了,就在Slide1中写吧。

    好了,基本知识就这么多了,来看看我们要做的东西吧。我们想做一个图片展示系统,就是网上很多的那样,单击小图出大图和说明,大概的样子象图示这样:

    分析功能:
    1.单击小图,小图消失,大图出现,说明文字出现。
    2.单击关闭,大图,说明文字消失,小图归位。

    核心的代码其实只有2段,先贴出来

    ===========================
    Sub One()
    Shapes(6).Visible = True
    Shapes(1).Top = 150
    Shapes(1).Left = 230
    Shapes(1).Width = 262
    Shapes(1).Height = 209
    Shapes(8).Visible = True
    End Sub
    ==========================
    这是点击小图出大图的代码,简单吧,什么意思呢?
    1.Sub One()
       End Sub

    这是固定格式,所有的功能都以Sub xx()开始,以End Sub结束,这个XX可以自己命名,但不能乱取,比如数字就不可以,这里因为我是想单击第一张图片实现功能,所以取了个One.
    2.Shapes(6).Visible = True
    Shapes就是在ppt页面中的元素,一张图片叫Shapes,一个文本框也叫Shapes,大家都叫Shapes,那怎么区分呢?比如我们上面说的“唉,那个PPT,帮我把这张图片放大一倍“,这张图片是哪张图片?所以具体到每个Shapes,后面还要跟个(),括号里面的数字代表哪个。这个数字怎么来?是这样的,比如图片,第一张插入的就是1,第二张插入的就是2,但是要注意,如果你把二张图片的叠放次序改了,第二张图片放在了第一张图片的上面,那么第二张插入的图片就变成了Shapes(1)了。所以其实在PPT中在最顶层的那个元素就是1,以此类推。
    Visible的意思就是看得见,True就是真,要是看不见呢?就是Flase,整句话的意思就是“唉,把第六层的那个东东显示出来。”在本例中Shapes(6)就是指大图的背景框
    3.Shapes(1).Top = 150
    Shapes(1).Left = 230
    Shapes(1).Width = 262
    Shapes(1).Height = 209
    Shapes(8).Visible = True
    有了2的解释,3就很容易了,就是把第一张图片的位置设成离顶部150,离左边230,宽262,高209,Spapes(8).Visible=Ture的意思就是把第一张图片的说明文字显示出来。因为在本例中第一张图片的说明文字是放在第8层。

    写完代码后怎么调用呢?
    在ppt页面中选中第一张图片,鼠标右键--动作设置,选择单击鼠标--运行宏,把Slide1.One选上就可以了。
    还有一段代码是实现小图归位的,这里就不罗嗦了,下了DEMO慢慢看吧。
    很希望看完这篇小文后,你会觉得VBA其实不难,接着有兴趣深入,那正是我希望的。

    下载

  • 召唤精灵-MS Agent在Powerpoint中的应用

    日期:2008-05-28 | 分类:VBA

    MS Agent推出已经很久了,本来我以为会非常流行,是将来的趋势,但实际上好像反应不太热烈。这次做一个自学用课件需要用到帮助系统,客户要求新颖和与众不同,突然想到了MS Agent,查了一些资料,真是觉得太棒了,我根据微软的例子简单修改做了个DOME大家可以下载感受下。

    如何使用?
    首先当然要将“宏”的安全性设为中,打开文件时候同意启用宏。
    放映PPT时按提示调用帮助精灵

    MS Agent入门
    MSAgent是微软在90年代发布的一项技术,最早用在OFFICE帮助上,称作OFFICE助手(你还有印象吗?)主要用处是提高人机交互的有效性和易用性,用户界面上由卡通角色,对话框等组成。默认的卡通角色有四个:Genie、MerLin、Bobby和Peedy(XP中默认的只有MerLin),但其他第三方提供了大量的Agent精灵,甚至可以通过微软提供的精灵编辑工具制造自己喜爱的动画精灵。这些精灵全部由自己各自的动作,如果安装了语音引擎的话还可以通过语音交互。

    安装MS Agent
    幸运的是如果我们的操作系统是windows2000以上,系统已经自带了MS Agent,不用安装了。我想我们大多数人用的都是XP吧?MAC的我没有试过,大家可以看一下在c:\windows\有没有一个msagent的文件夹,有的话就是已经安装了。如果没有,需要安装三个文件:
    1.msagent.exe
    2.tv_enua.exe
    3.merlin.exe
    这些文件可直接从微软网站下载。

    MS Agent的主要命令
    在本例中,对精灵发出命令只要直接写在PPT的备注页中,是的,你没有看错,就是只要写在备注中,方便哦!大家下载文件后可以看一下备注页,主要的命令有:
    AUDIO 
    END
    HIDE
    LOOP
    MOVE
    NEXT
    PLAY
    SAY
    其中最常用的是MOVE(移动精灵到某个位置),PLAY(播放动作),SAY(说话,显示文字提示),你自己可以随意修改,调换作出你自己的系统。要注意的是例子中只有1页PPT,如果你想做成多页,将END命令移到最后一页,END命令意思是结束精灵。从第二页开始不需要SHOW命令,其他都是一样的了。

    主要动作列表

     

    动 作 名 称  含   义  动 作 名 称  含   义 
    Acknowledge  承认  Alert  警告 
    Announce  宣布  Blink  眨眼 
    Confused  困惑  Congratulate  祝贺 
    Decline  拒绝  DoMagic1  魔法 
    DoMagic2  魔法  DontRecognize  不承认 
    Explain  解释  GestureDown  往下姿势 
    LookDownBlink  往下看眨眼  LookUp  往上看 
    LookUp  往上看  Processing  处理…… 
    Read  阅读  Sad  悲伤 
    Search  搜寻  Searching  寻找……
    Uncertain  不确定  Pleased  高兴 
    uggest  建议  Surprised  吃惊 
    wave  挥手  Write  书写
    在实际应用中,还可以做出很多变化,如MS Agent不支持中文语音,可以采用调用外部WAV文件的方式了让精灵讲中国话等等。

    DEMO下载

     

  • 清除空文本的小工具

    日期:2008-04-23 | 分类:VBA

    自己做的小工具,用的还挺顺手,提供下载。

    ====================================================================
    本加载项是参考有关资料编写,供有需要使用
    ====================================================================
    背景:
    做完PPT后,有时候会在页面上留下很多空的文本框,一般我们会全部检查一次,
    原始的方法是页面全选,然后一个个检查,非常麻烦。有了这个小工具,可以瞬间
    一次性清除所有PPT上空的文本框。

    一.临时使用安装:
    1.解压下载的文件。
    1.打开需要修改的PPT,将安全设置中宏的安全性设置为中。
    2.双击解压后的文件CleanText.ppa
    3.在弹出的安全警告中选运行宏。
    4.在菜单“工具”中会多出一条菜单“清除空文本”,执行该菜单。
    5.按对话框确定,瞬间清除所有空文本框。
    6.临时使用安装当PPT关闭的时候自动卸载,下次使用仍需安装。

    二.永久使用安装
    1.解压下载的文件。
    2.将解压后的CleanText.ppa文件复制。
    3.打开任意ppt文件
    4.选“工具”--“加载项”,在对话框中选“添加”
    5.在打开的文件选择中的空白处按“粘帖”将刚才复制的CleanText.ppa添加到该目录。
    选择该文件,按确定。
    6.在弹出的安全警告中选运行宏。
    7.在菜单“工具”中会多出一条菜单“清除空文本”,执行该菜单。
    8.按对话框确定,瞬间清除所有空文本框。
    9.永久使用安装使用时候无需安装。

    =============================================================
    以上在office2003中调试通过,2007没有测试,欢迎大家反馈,以便改进。
    下载