Excel über PPT VBA schließen und nicht speichern

Bild

Betrifft: Excel über PPT VBA schließen und nicht speichern
von: Virginie
Geschrieben am: 26.08.2015 12:29:48

Hallo zusammen,
ich habe ein Problem das mich schon des längeren nervt. Meine Ideen helfen mir nicht mehr weiter und ehrlich gesagt weiß ich auch nicht was ich noch ausprobieren könnte...
Ich habe eine PPT-Datei mit vielen Pivot-Charts die automatisch aktualisiert werden. Da dies an die 200 Grafiken sind lasse ich die Excel-Files (sind 5 and der Zahl) mit einem Makro über PPT einmalig öffnen dann braucht PPT nämlich nicht so lange zum Aktualisieren (mit öffnen 2min, ohne öffnen 13min).
Jetzt möchte ich, dass nach der Aktualsierung die Excelfiles auch wieder geschlossen werden. Das bekomme ich alles hin aber leider fragt mich Excel dann ob ich speichern möchte und das bekomme ich einfach nicht weg. Egal ob ich ThisWorkbook.Saved=False oder Application.DisplayAlerts = False verwende ich bekomme es einfach nicht hin.
Könnt ihr mir da weiterhelfen?
Der Code sieht wie folgt aus (verkürzte Version mit nur einem Excel das geöffnet wird):


Sub Excelfiles_öffnenundaktualisieren()
' gewisse Files öffnen
Dim ExcelSheet As Object
Set ExcelSheet = CreateObject("Excel.Application")
ExcelSheet.Application.Visible = False
ExcelSheet.Application.Workbooks.Open FileName:=ActivePresentation.Path & "\rev1.xlsm",  _
UpdateLinks _
        :=0
' alle Diagramme aktualisieren
Dim PPT_1 As PowerPoint.Application
 Set PPT_1 = CreateObject("Powerpoint.Application")
 Dim PPT As PowerPoint.Presentation
 Set PPT = PPT_1.ActivePresentation
 Dim i As Long
 Dim s As Long
 For i = 1 To PPT.Slides.Count
 For s = 1 To PPT.Slides(i).Shapes.Count
 If PPT.Slides(i).Shapes(s).Type = msoLinkedOLEObject Then
 PPT.Slides(i).Shapes(s).LinkFormat.AutoUpdate = ppUpdateOptionAutomatic
 End If
 Next s
 Next i
 PPT.UpdateLinks
 For i = 1 To PPT.Slides.Count
 For s = 1 To PPT.Slides(i).Shapes.Count
 If PPT.Slides(i).Shapes(s).Type = msoLinkedOLEObject Then
 PPT.Slides(i).Shapes(s).LinkFormat.AutoUpdate = ppUpdateOptionManual
 End If
 Next s
 Next i
' Mistding schließen
ExcelSheet.Application.Quit
End Sub

Bild

Betrifft: AW: Excel über PPT VBA schließen und nicht speichern
von: Luschi
Geschrieben am: 26.08.2015 19:14:28
Hallo Virginie,
bei mir klappt das immer so:


'keine Umlaute für Prozedur-Bezeichnungen
Sub ExcelFiles_OeffnenUndAktualisieren()
    
    ' gewisse Files öffnen
    Dim ExcelApp As Object
    Dim ExcelWb As Object
    Set ExcelApp = CreateObject("Excel.Application")
    
    ExcelApp.Visible = False
    
    'Excel-Mappe schreibgeschützt öffnen
    Set ExcelWb = ExcelApp.Workbooks.Open(Filename:=ActivePresentation.Path & "\rev1.xlsm", _
                  UpdateLinks:=0, ReadOnly:=True)
    
    ' alle Diagramme aktualisieren
    
    'Dein weitere Vba-Code
    '...
    '...
    '...
    
    ' Mistding schließen
    ExcelWb.Close SaveChanges:=False
    Set ExcelWb = Nothing
    
    ExcelApp.Quit
    Set ExcelApp = Nothing
End Sub
Gruß von Luschi
aus klein-Paris

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Excel über PPT VBA schließen und nicht speichern"