Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1448to1452
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

prüfen ob .ppt offen ist.

prüfen ob .ppt offen ist.
30.09.2015 23:31:25
Arne
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

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: prüfen ob .ppt offen ist.
01.10.2015 00:08:55
Daniel
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

Anzeige
AW: prüfen ob .ppt offen ist.
01.10.2015 08:59:45
Arne
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 :)

Anzeige
AW: prüfen ob .ppt offen ist.
01.10.2015 09:30:06
Daniel
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

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

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige