Meldung "Dokument in Benutzung" abfangen

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

craig22
****
Beiträge: 135
Registriert: Mi, 19.08.2020 13:47

Meldung "Dokument in Benutzung" abfangen

Beitrag 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.
Gruß

Craig
_____________________________________________________
WIN 10 Pro 64-Bit • LO 7.1.5.2 (x64) • AOO 4.1.8
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Meldung "Dokument in Benutzung" abfangen

Beitrag 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
craig22
****
Beiträge: 135
Registriert: Mi, 19.08.2020 13:47

Re: Meldung "Dokument in Benutzung" abfangen

Beitrag 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.
Gruß

Craig
_____________________________________________________
WIN 10 Pro 64-Bit • LO 7.1.5.2 (x64) • AOO 4.1.8
Antworten