DekkaG
asked on
How do you close PowerPoint 2007 using VBA
I am trying to close MS Powerpoint (2007) from vba in another presentation where i don't save the presentation.
What is the code I am supposed to run to close. When I close the presentation manually, ppt crashes.
Any suggestions or code are greatly welcome.
Thanks...
What is the code I am supposed to run to close. When I close the presentation manually, ppt crashes.
Any suggestions or code are greatly welcome.
Thanks...
ASKER
I don't want to quit the application. Just the presentation. I have another presentation open in the app.
try this one....
SlideShowWindows(Index:=1)
this will close the specific presentation
ASKER
i got the following run time error:
-2147188160 (80048240)
slideshowwindows(unknown member): integer out of range. 1 is not in the valid range of 1 to 0.
Never seen this one before. I would have thought that 1 is in that range....
Getting close i'm feeling....
-2147188160 (80048240)
slideshowwindows(unknown member): integer out of range. 1 is not in the valid range of 1 to 0.
Never seen this one before. I would have thought that 1 is in that range....
Getting close i'm feeling....
can u post your code?
change the index number '1' to the index number of your slide..
SlideShowWindows(Index:=1)
game-master
try this one...
If SlideShowWindows.Count > 0 Then
SlideShowWindows(SlideShow
End If
the error occur when your trying to exit the slideshow but either there no
active slideshow or your having an incorrect index..
game-master
Try
Presentations("name.pptx") .Close
Obviously substitue the name of the actual presentation.
Presentations("name.pptx")
Obviously substitue the name of the actual presentation.
ASKER
I am attaching the code I am using right now. Hopefully this will help.
JSRWilson, I have tried using that method but a dialog box opens up to ask me whether i want to save the file. Is there a way to say no or not have that box pop up?
JSRWilson, I have tried using that method but a dialog box opens up to ask me whether i want to save the file. Is there a way to say no or not have that box pop up?
Sub PullExcelData()
mbErrorSwitch = False
Set objWorksheet = objWorkbook.Worksheets("QueryMap")
PresName = objWorksheet.Range("nrPresName").Value
strPresPath = WKBKPATH & PresName
oPPTObjName = objWorksheet.Range("nrObjName").Value
Application.DisplayAlerts = False
'Open the presentation
Presentations.Open (strPresPath)
'Set oPPTApp = CreateObject("Powerpoint.Application")
Set objPresentation = ActivePresentation
Set objSlide = objPresentation.Slides(1)
' Set objexcel = CreateObject("Excel.Application")
' objexcel.Visible = False
' Set objWorkbook = objexcel.Workbooks.Open(ActivePresentation.Path & "\Connection Script1.2.xlsm")
Set objWorksheet = objWorkbook.Worksheets("Main")
Set objRange = objWorksheet.Range("nrMainCopyRange")
'Instantiate the workbook object from the OLE object
Set objExcelDestWb = objSlide.Shapes(oPPTObjName).OLEFormat.Object
'Define what worksheet to paste into
Set objExcelDestSheet = objExcelDestWb.Worksheets(1)
'Optionally clear destination sheet, depends what you are updating..
objExcelDestSheet.Cells.ClearContents
objWorksheet.Activate
objRange.Copy
'PASTE INTO EXCEL TABLE at cell A1
objExcelDestSheet.Paste objExcelDestSheet.Range("A1")
' AutoFitColumns
Dim mvgRng As Range
With objExcelDestSheet
.Columns("C:Z").AutoFit
End With
objExcelDestSheet.Range("A1").EntireColumn.ColumnWidth = 50
Set mvgRng = objExcelDestSheet.Range("B1:Z1")
For Each c In mvgRng.Cells
If c.EntireColumn.ColumnWidth > 30 Then
c.EntireColumn.ColumnWidth = 30
Else: End If
Next c
objExcel.CutCopyMode = False
Application.DisplayAlerts = True
On Error Resume Next
Set oPPTShape = objPresentation.Slides(1).Shapes("txtAsOfDate")
Set objWorksheet = objWorkbook.Worksheets("SysConfig")
oPPTShape.TextFrame.TextRange.Text = "As of " & objWorksheet.Range("nrCharDateDisplay").Value
Set oPPTShape = objPresentation.Slides(1).Shapes("txtFootnote")
Set objWorksheet = objWorkbook.Worksheets("Other")
oPPTShape.TextFrame.TextRange.Text = objWorksheet.Range("nrFootnote").Value
' oPPTApp.Visible = True
' SlideCopy2
Dim s As Slide
Dim vt As Long
On Error GoTo slideError
Presentations.Add
Set objPresentation2 = ActivePresentation
vt = objPresentation2.Windows(1).ViewType
objPresentation2.Windows(1).ViewType = ppViewOutline
For Each s In objPresentation.Slides
s.Copy
Set cl = s.CustomLayout
objPresentation2.Slides.Paste
objPresentation2.Slides(objPresentation2.Slides.Count).CustomLayout = cl
Next s
objPresentation2.Windows(1).ViewType = vt
' objPresentation.Windows(1).Activate
' SlideShowWindows(Index:=1).View.Exit
' objPresentation.Windows(1).Close
' With Application.objPresentation
' .Saved = True
' .Close
' End With
Exit Sub
slideError:
End Sub
Set the Saved flag to True?
With Presentations("notestest.p ptx")
.Saved = msoTrue
.Close
End With
With Presentations("notestest.p
.Saved = msoTrue
.Close
End With
ASKER
JSRWilson,
I added that to the bottom of my code, but now PPT is totally crashing on the .Close
Here is the error i am getting.
Run-time error -2147417848 (80010108)
Automation Error
The object invoked has disconnected from its clients.
I added that to the bottom of my code, but now PPT is totally crashing on the .Close
Here is the error i am getting.
Run-time error -2147417848 (80010108)
Automation Error
The object invoked has disconnected from its clients.
ASKER
The only way i am able to do this is to save the file to my temp path. Then i can close the presentation without it crashing.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
good morning!
have you tried application.quit
game-master