首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PowerPoint VBA/VSTO有未来吗?

PowerPoint VBA/VSTO有未来吗?
EN

Stack Overflow用户
提问于 2009-11-11 22:26:09
回答 4查看 2.5K关注 0票数 7

有人知道PowerPoint中的VBA/VSTO编程的未来吗?我一直在做一个办公自动化项目,我发现使用PowerPoint很令人沮丧,特别是因为它似乎比Excel或Word中的VBA支持低一个级别。

感觉微软正试图逐步淘汰PowerPointsince中对VBA的支持,他们在2007版本中放弃了宏录制,并且对象模型缺乏一些关键功能支持。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-11-26 11:03:07

我不确定这是否是您想要听到的答案,但在PowerPoint中使用VBA进行开发实际上是很好的。我做了相当多的工作(以及Word和Excel),而且它足够健壮。每个新版本的PowerPoint都会更新可用VBA进行编程的PPT。在PPT 2007中,您可以针对幻灯片上的任何对象创建自定义XML -这比Excel和Word中提供的选项要强大得多。相比之下,Word2007有内容控件,为了让PPT成为Crystal Reports的轻量级替代品,它将从中受益。例如,在PPT2010(测试版)中,您可以通过编程方式创建SmartArt,就像使用Word/Excel2010一样。您还可以通过编程方式比以前更好地使用媒体元素。但是,从OM的角度来看,VSTO并没有提供比VBA更多的东西。

这可能只取决于你的需求--你会创建标准的项目幻灯片吗?你做扩展动画吗?你做报道吗?你在创建eLearning的“应用程序”吗?如果您有关于OM的特定问题,我们可以尝试在这里帮助您(但可能该功能就是不存在)。

同意移除宏录制器有点糟糕,这是一个有用的功能。直接使用PML/DML也是一件痛苦的事情。我希望OM也支持一些东西。但与caving一致,我认为VBA不会很快消失。

注意::这不能工作。它只是作为一个起点,如果人们想要把它开发成可能工作的东西(如果你能让它工作,请随时编辑这篇文章)。

在以下代码中,

  1. 创建一个名为"clsPPTEvents"
  2. Paste的类。

公共WithEvents PPTEvent As应用程序私有声明函数GetCursorPos Lib "user32“(ByVal lpPoint As POINTAPI) As Long私有类型POINTAPI x只要长端类型Dim mousePosition As POINTAPI私有子PPTEvent_WindowSelectionChange(ByVal选择As Selection) Dim ElementID As Long Dim Arg1 As Long Dim Arg2只要带有Sel If .Type = ppSelectionShapes则Dim sr As ShapeRange sr = .ShapeRange If sr.Type = msoChart然后Dim sh As Shape Dim crt As Integer slideNumber = ActiveWindow.View.Slide.SlideIndex sh = ActivePresentation.Slides(slideNumber).Shapes(sr.Name) Dim crt As Chart crt= sh.Chart H= ActiveWindow.Height w= ActiveWindow.Widthret = GetCursorPos(mousePosition) x=鼠标位置.x y=鼠标位置.y crt.GetChartElement(x,y,ElementID,Arg1,Arg2) MsgBox("X:“&x& ",Y:”&y& vbNewLine &_ " ElementID:“&ElementID& ",Arg1:”& Arg1 & ",Arg2:“& Arg2) End If End If End with End Sub

  • 在常规模块中,您可以使用以下命令启动/停止事件处理:

将公共newPPTEvents设置为新的子子clsPPTEvents StartEvents() Set newPPTEvents.PPTEvent =应用程序终结子EndEvents() Set newPPTEvents.PPTEvent =无终结子

请注意,在#2中的代码中,它不工作是因为GetCursorPos返回的是屏幕X,Y。在查看事件时,看起来GetChartElement需要的是窗口或窗格边界框的坐标,或者只是图表本身。

票数 8
EN

Stack Overflow用户

发布于 2009-11-24 22:33:33

Powerpoint从来都不是VBA开发的流行平台。我可以理解在这种情况下删除VBA的UI特性。借助Excel和Word的力量,很容易将VBA对Powerpoint的支持包括进来--这一点不会很快消失,甚至不会消失。从长远来看,我的钱将花在遗留支持上,微软对问题的帮助很少,甚至根本不存在。

请记住,MS都是关于向后兼容性的--当他们放弃它时,他们会非常小心。

票数 4
EN

Stack Overflow用户

发布于 2010-06-05 22:09:50

我同意PPT远低于其他vba。最重要的是,它似乎有buggy,请参阅Weird bug on powerpoint vba

模型事件很笨拙,就像没有自动执行How to automatically trigger the App Object initialization in Powerpoint?一样

auto_open只能通过创建一个插件来实现,如果用户收到您的ppt但不知道如何安装该插件,该怎么办:(

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1715492

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档