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



我想知道如何从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

PowerPoint.Application上调用.Active正是这样做的——它会激活它,从而使窗口可见:

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返回一个现有实例(如果存在)。我假设,当你说"创建一个新的PPT"时,你的意思不是"如果存在正在运行的PowerPoint实例,请附加到它,否则创建一个"。这就是您的代码当前所做的工作。

同样如评论中所述,如果您参考了Microsoft PowerPoint X.X对象库(如Dim pptApp As PowerPoint.Application所示),则也不应该使用CreateObject。那是迟装订的。如果您有参考,请使用早期绑定。

最后,当您创建PowerPoint.Application时,默认情况下它是不可见的。您可以通过将代码简化为以下一行来"修复"代码:

Set pptApp = New PowerPoint.Application

最新更新