prüfen ob .ppt offen ist.

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
UserForm Label MsgBox
Bild

Betrifft: prüfen ob .ppt offen ist.
von: Arne
Geschrieben am: 30.09.2015 23:31:25

Moin.
ich habe hier schon vieles gesucht und angelesen, komme jetzt aber gerade nicht weiter.
folgendes Problem:
ich möchte über eine userform prüfen, ob eine bestimmte PowerPoint Datei offen ist.
wie ich die öffne, Sachen einfüge usw ist nicht das Problem, nur das prüfen, ob es offen ist.
Teil des bisherigen codes speichern und schließen die Datei nach dem verändern sofort, das geht aber nicht, wenn sie vorher schon offen war, weils jetzt ja eine schreibgeschützte Kopie ist :/
habs mit getObject versucht, bin aber gescheitert.
vielen dank für eure hilfe

Bild

Betrifft: AW: prüfen ob .ppt offen ist.
von: Daniel
Geschrieben am: 01.10.2015 00:08:55
Hi
beispielsweise kannst du versuchen, die Datei zu aktivieren.
ist sie geschlossen, erzeugt das einen Fehlerabbruch, den du aber durch ein "On Error Resume Next" verhinderst.
ob jetzt ein Fehler passiert ist, kannst du herausfinden, in dem du die Systemvariable err abfragst, welche nach einem Fehler die Fehlernummer enthält

On Error Resume Next
AppActivate "Dateiname.xxx"
if err = 0 then  
    Datei geöffnet
else
    Datei geschlossen
End if
On Error Goto 0
bei Excel workbooks mach ich das immer so, dass ich die Datei einer Variablen zuweise.
zuerst versuche ich, die geöffnete Datei der Variablen zuzuweisen, und wenn das nicht erfolgreich war und die Variable leer blieb, dann wird die Datei geöffnet.
dim WB as Workbook
on error resume next
set wb = Workbooks("xxx.xls")
if wb is nothing then set wb = Workbooks.Open(...xxx.xls)
On error goto 0

sollte im Prinzip auch mit Powerpoint-dateien funktionieren, nur kenn ich da grad die Syntax nicht.
Gruss Daniel

Bild

Betrifft: AW: prüfen ob .ppt offen ist.
von: Arne
Geschrieben am: 01.10.2015 08:59:45
ich hab das so versucht:


Private Sub Label15_Click()
Dim ObjPP   As Object
Dim objP    As Object   'powerpoint.Presentation
Dim objCL   As Object   'PowerPoint.CustomLayout
Dim objS    As Object   'PowerPoint.Slide
If IspptOpen("test-schedule.pptx") Then
MsgBox ("auf")
Else
MsgBox ("zu")
End If
Stop
Set ObjPP = CreateObject("Powerpoint.application")
Set objP = ObjPP.presentations.Open("I:\[...]\test-schedule.pptx") '[...] dateipfad
Set objCL = objP.SlideMaster.CustomLayouts(1)
Set objS = objP.Slides.AddSlide(1, objCL)
Worksheets("Mo AM").Range("A1:X29").CopyPicture
With objS.Shapes.Paste  'Powerpoint.shaperange
    .Left = (objCL.Width - .Width) / 2
    .Top = (objCL.Height - .Height) / 2
End With
      ObjPP.DisplayAlerts = False
   objP.Save
   ObjPP.DisplayAlerts = True
   ObjPP.Quit
End Sub
msgboxen und stop ist gerade nur zu testzwecken drin. sobald ich da die lösung zu habe, wird das öffnen logischerweise in die IF-schleife geschrieben.
die function für isPPTOpen ist:

Function IspptOpen(strPPT As String) As Boolean
    On Error Resume Next
    IspptOpen = Not Powerpoint.Application.presentations(strPPT) Is Nothing
End Function

für Excel workbooks hab ich folgendes drin, und das funktioniert auch

Function IsWorkbookOpen(strWB As String) As Boolean
    On Error Resume Next
    IsWorkbookOpen = Not Workbooks(strWB) Is Nothing
End Function
mit dem aufruf

    If IsWorkbookOpen("Anwesenheit 2015.xlsm") Then
    Else
       Workbooks.Open Filename:=filepath & "\Anwesenheit 2015.xlsm"  
    End If

bin für jede Anregung dankbar. auch wenn ihr mir sagt, dass mein Ansatz kompletter schrott sei :)

Bild

Betrifft: AW: prüfen ob .ppt offen ist.
von: Daniel
Geschrieben am: 01.10.2015 09:30:06
Hi
probiers mal so:

Dim ObjPP   As Object
Dim objP    As Object   'powerpoint.Presentation
Dim objCL   As Object   'PowerPoint.CustomLayout
Dim objS    As Object   'PowerPoint.Slide
Set ObjPP = CreateObject("Powerpoint.application")
On Error Resume Next
Set objP = ObjPP.presentations("test-schedule.pptx")
If objP Is Nothing Then Set objP = ObjPP.presentations.Open("I:\[...]\test-schedule.pptx")
On Error GoTo 0
If objP Is Nothing Then
    MsgBox "Datei nicht vorhanden"
    Exit Sub
End If
Set objCL = objP.SlideMaster.CustomLayouts(1)
Set objS = objP.Slides.AddSlide(1, objCL)
...
der code versuchst zuerst, die geöffnete Präsentation der Variablen zuzuweisen.
Wenn das fehlschlägt, weil die Präsentation noch nicht geöffnet ist, wird diese geöffnet.
wenn das auch nicht funktioniert, erfolgt der Abbruch.
Gruß Daniel

Bild

Betrifft: AW: prüfen ob .ppt offen ist.
von: Arne
Geschrieben am: 01.10.2015 11:15:45
Das klappt!
vielen dank! :))))

 Bild

Beiträge aus den Excel-Beispielen zum Thema "prüfen ob .ppt offen ist."