Seite 1 von 1
Meldung "Dokument in Benutzung" abfangen
Verfasst: Mo, 04.01.2021 19:15
von craig22
Hallo,
wenn bereits ein Dokument geöffnet ist und man es mittels Makro nochmals versucht zu öffnen,
dann erscheint die Meldung "Dokument in Benutzung" mit den Optionen:
- Schreibgeschützt öffnen
- Arbeitskopie öffnen
- Abbrechen
Diese Meldung soll nicht sichtbar erscheinen und die Option "Abbrechen" soll betätigt wird.
Ggf. ein anderes Verfahren.
Wie kann ich dies erreichen?
Hinweis:
Nach dem Betätigen von "Abbrechen", erfolgt dann in meinem Makro ein
Error-Handling, passende Messagebox und Exit Sub.
Re: Meldung "Dokument in Benutzung" abfangen
Verfasst: Mo, 04.01.2021 20:28
von Stephan
Diese Meldung soll nicht sichtbar erscheinen und die Option "Abbrechen" soll betätigt wird.
Ggf. ein anderes Verfahren.
Wie kann ich dies erreichen?
Bevor Du versuchst das Dokument zu öffnen, prüfe ob es bereits geöffnet ist, z.B.:
Code: Alles auswählen
Sub Main
URL_von_zu_oeffnender_Datei = ConverttoURL("D:\BlaBla.ods")
gefunden = 0
alles = StarDesktop.getComponents
elemente = alles.CreateEnumeration
Do While elemente.HasMoreElements
aktuell = elemente.NextElement
If aktuell.hasLocation Then
If aktuell.URL = URL_von_zu_oeffnender_Datei Then
gefunden = 1
Exit Do
End If
End If
Loop
If gefunden = 0 Then
'...Datei ist noch nich offen und muss geöffnet werden
End If
End Sub
Gruß
Stephan
Re: Meldung "Dokument in Benutzung" abfangen
Verfasst: Mo, 04.01.2021 21:20
von craig22
Hallo Stephan,
vielen Dank, ein frohes und gesundes neues Jahr.
In der Zwischenzeit hatte ich versucht mich über die Frames und deren Namen in der Titelleiste zu nähern:
Code: Alles auswählen
REM "FileNameoutofPath" in Bibliothek "TOOLS" im Modul "STRINGS"
REM Function FileNameoutofPath(ByVal Path as String, Optional Separator as String) as String
sFile=FileNameoutofPath(sPath)
oSD=Stardesktop
nCnt1= oSD.Frames.Count
oFrames=oSD.Frames
For nCnt2 = 0 to nCnt1 -1
oFrame=oFrames.getByIndex(nCnt2)
mStr()=Split(oFrame.Title," - LibreOffice Calc")
If mStr(0)=sFile then
GoTo ErrorHandler
Exit Sub
End If
Next nCnt2
Ich finde Deinen Code eleganter und habe ihn eingebaut.
Funktioniert perfekt.