如何在不查看应用程序的情况下使用Excel VBA创建PowerPoint

时间:2017-01-31 21:29:20

标签: excel vba excel-vba powerpoint powerpoint-vba

我想知道如何从Excel VBA创建新的PPT(我已经有了代码),但是在创建时没有看到应用程序。我找到了一些见解但它只在打开现有PPT文件时才有效,但我正在创建一个新文件。

Dim pptApp As PowerPoint.Application
Dim pptPres As PowerPoint.Presentation
Dim pptSlide As PowerPoint.Slide
Dim pptShape As PowerPoint.Shape
Dim excelTable As Excel.Range
Dim SlideTitle As String
Dim SlideText As String
Dim SlideObject As Object
Dim pptTextbox As PowerPoint.Shape
Dim SlideNumber As String

On Error Resume Next
Set pptApp = New PowerPoint.Application
Err.Clear

Set pptPres = pptApp.Presentations.Add
pptPres.PageSetup.SlideSize = ppSlideSizeOnScreen

1 个答案:

答案 0 :(得分:2)

.Active上调用PowerPoint.Application就是这样 - 它会激活它,这会使窗口可见:

Dim ppt As PowerPoint.Application
Set ppt = New PowerPoint.Application
Debug.Print ppt.Visible  '<--Prints 0 (msoFalse)
ppt.Activate             '<--THIS SHOWS THE WINDOW.
Debug.Print ppt.Visible  '<--Prints -1 (msoTrue)

完全删除pptApp.Activate行。

如评论中所述,您还需要修复错误处理程序。在这种情况下,最好的解决方法是完全删除它。 GetObject返回现有实例(如果存在)。我假设当你说&#34;创建一个新的PPT&#34;您 表示&#34;如果存在,请附加到正在运行的PowerPoint实例,否则请创建一个新实例&#34;。这就是您的代码目前所做的事情。

同样如评论中所述,如果您引用Microsoft PowerPoint X.X对象库(由Dim pptApp As PowerPoint.Application证明),您也不应该使用CreateObject。这是后期约束的。如果您有参考,请使用早期绑定。

最后,当您创建PowerPoint.Application时,默认情况下 。你可以修复&#34;将代码缩减到这一行:

Set pptApp = New PowerPoint.Application