Reputation: 1251
I have to post a lot of Excel charts to a specific PowerPoint document and I'm building out a macro in Excel VBA to do it for me.
I'm able to correctly open the PowerPoint presentation that I want to update, however I don't know how to set the presentation I just opened to a variable called MyPresentation
.
Dim myPresentation As PowerPoint.Presentation
Dim PowerPointApp As PowerPoint.Application
PowerPointApp.Presentations.Open Filename:="obscured filepath and name"`
Obviously there's some additional code, but I'm trying to set the Presentation I just opened in line 3 set to the MyPresentation
variable so I can reference the document I just opened.
Upvotes: 3
Views: 90690
Reputation: 11
I was trying to create an excel file that can generate a predefined powerpoint presentation on the basis of a specific worksheet, with different values within the excel-file.
My issue was that every person in my department should be able to download the excel-file and run it.
Defining Presentations within vba doesn't work for everyone since the reference that is required for this action isn't activated on every computer/excel-programm.
Createobject did the trick for me to get around the problem. Here the code i am talking about:
Dim pptApp as object
Dim strpath as string
strpath = ThisWorkbook.Path & "\Test_Dummy.pptx"
Set pptApp = createobject("Powerpoint.application")
pptApp.Presentations.Open Filename:=strpath, readonly:=false, untitled:=true, withwindow:=true
What didn't work was stuff like:
Dim pptApp as Powerpoint.Application
or
Dim pptApp as object
Set pptApp = New Powerpoint.Application
without setting the required references in vba
Upvotes: 1
Reputation: 345
This one worked for me:
'devlare variables
Dim MyPPT As Object
'create PowerPoint
Set MyPPT = CreateObject("Powerpoint.application")
'make it visible
MyPPT.Visible = True
'path to powerpoint
MyPPT.presentations.Open "path\powerpoint.pptx"
Set visible to true, before open it. otherwise it did not worked for me
Upvotes: 0
Reputation: 61
First you have to pave the way for using ppt files, what I did:
Dim DestinationPPT As String
Dim PowerPointApp As PowerPoint.Application
Dim myPresentation As PowerPoint.Presentation
Set PowerPointApp = CreateObject("PowerPoint.Application")
DestinationPPT = "path"
PowerPointApp.Presentations.Open (DestinationPPT)
Upvotes: 6
Reputation: 1251
I ended up finding a solution by the MVP Andy Pope.
Some relevant code snippets for future users. (FYI My PPT was already visible when I ran into the problem)
Dim DestinationPPT As String
Dim PowerPointApp As PowerPoint.Application
Dim myPresentation As PowerPoint.Presentation
'Easier to define manually set links up front so it's easier to change/modify
DestinationPPT = "C:\yourfilepath\yourfilename.pptx"`
Lookup the Spreadsheet Guru's guide to opening PPT from Excel VBA
Then:
Set myPresentation = PowerPointApp.Presentations.Open(DestinationPPT)
Upvotes: 5