• 用PPT做个图片展示系统

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

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://www.blogbus.com/pptdesign-logs/21935616.html

    上次我们说了用插入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其实不难,接着有兴趣深入,那正是我希望的。

    下载

    分享到:

    评论

  • 我的评论呢?找不到耶。
  • 我的评论呢?找不到耶。
  • 按照老师的方法,我下载后总于能够播放了。
  • 老师呀老师,真厉害!我看的都眼花呢。不过这个功能似乎很强大哟。
  • 我的疑问跟六楼的“小路”一样的,就是那些图片的说明文字,还有那个大图的边框什么的,是什么时候放上去的呢,在代码和界面上都看不出来,还恳请作者或者看懂了的人指点下,再次感谢!
  • 我也感觉是大乘老师笔误,把顶层和底层写错了。
    好像是底层的序号是1
  • 其实在PPT中在最顶层的那个元素就是1,以此类推。
    这句是不是错误了?大成老师?

    应该最底层的才是Shapes(1)
  • Sub huanyuan()
    Dim I As Integer
    For I = 1 To 5
    Shapes(I).Visible = True
    Shapes(I).Top = 80 + (I - 1) * 70
    Shapes(I).Left = 60
    Shapes(I).Width = 80
    Shapes(I).Height = 50
    Next
    For I = 8 To 12
    Shapes(I).Visible = False
    Next
    End Sub
    Sub One()
    Slide1.huanyuan
    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

    Slide1.huanyuan 这个代码怎么理解啊?
    还有Shapes(1)里面的数字1,到底是第一个插入图片,是排放次序顶层,还是最底层?
  • 呀 看来我还不是很笨 看懂了呢
    我要多学习语法
  • 不得不佩服,高手就是高手,能把一个看不懂vba的人,看明白,就是真正的高手,江湖人材多啊,牛人,谢谢
  • 不能下载噢。。。。。。。。
  • 呜呜。。我也下载不到。。呜呜
  • 我跟cn一样丫,放映的时候只有初始状态的样子。。
  • 很有兴趣学这个。博主有没有PPT相关的VBA教程啊?指点一下,谢谢了!!!
  • lz太帅了,谢谢!
  • 可以下啊,哈哈。按照时间一路看来,收获很多啊。希望今天一天能全部浏览一遍。

    我只会PPT,其他的都不会,回头再漫漫实践。

    再次谢谢LZ
  • 不能下了,连接失败。
  • 请问自己做一个图片展示,该怎么做呢?
    谢谢~
  • 我下下来就只有一张幻灯片,放映的时候也只有初始状态的样子,点小图都没啥反应
  • 非常生动的一堂课,但老师我还有一点不明白的是图片的描述文字(如:“四溢的飘香”)之前在哪里录入的呢,怎么在代码里看不到?谢谢!
  • 怎么找VBA学习教程呢?
  • 谢谢您的精心传授,我已经把您的地址推荐给中华压铸网市场营销版块,因为我想身为做业务的我们是非常需要许写的.

    再次,表示感谢!
  • 非常棒,已经可以用了,谢谢!
  • 下载后,不能演示啊!是不是我的PPT有问题呀!
    回复培训百事通说:
    程序肯定没有问题,最可能的原因,:如果打开PPT的时候,没有提示"宏“安全问题,说明你将PPT的宏安全性设定为”高“了,应该改为”中“,具体:菜单--工具--宏--安全性--中。打开PPT时候,同意启用宏。
    2008-06-07 10:25:42
  • 非常有用,我已转到我的论坛,非常感谢!

    www.eechi.com.cn