Seite 1 von 1

Prüfen ob geöffnete Datei schreibgeschützt ist

Verfasst: Mo, 09.02.2009 16:24
von oktobaer
Hallo Ihr!

Habe ja hier im Forum den genialen Tipp bekommen wie man eine Datei unsichtbar öffnet.
Nun kann es passieren, dass zwei Anwendungen gleichzeitig darauf zugreifen, was im "nur lese Modus" auch funktioniert - erst beim Schreiben gibt es einen Fehler!

FRAGE: Kann ich beim Öffnen via:
FUNCTION MDB_Open
if Tracking%=1 then print"MDB_Open"
if MDBFileOpen%=0 then
oDesktop = createUnoService("com.sun.star.frame.Desktop")
Datei$=SetupRead(8,2)
Url = ConvertToUrl (Datei$)
dim p(0) as new com.sun.star.beans.PropertyValue
p(0).Name = "Hidden"
p(0).Value = true
Doc_B = StarDesktop.loadComponentFromURL(Url, "_default", 0, p())
MDBFileOpen%=1
end if
END FUNCTION
... prüfen ob die Datei schon geöffnet ist?

Danke!

Oktobaer

Re: Prüfen ob geöffnete Datei schreibgeschützt ist

Verfasst: Mi, 11.02.2009 22:51
von keksi1970
hi,

wie wäre es mit

if Doc_B.IsReadonly = true then

funktioniert bei mir, wenn ich das dokument von anfang an schreibgeschützt öffne ^^

lg Andreas

Re: Prüfen ob geöffnete Datei schreibgeschützt ist

Verfasst: Do, 12.02.2009 15:07
von sarotti
Hallo Oktobaer

...hier eine Variante mit dem Auslesen der Datiattribute...

Code: Alles auswählen


if GetAttr(Url)=1 then  '1=schreibgeschützt
	msgBox "Die Datei ''"+sQuellDatei+"'' ist schreibgeschützt",16,"Abbruch"
	exit sub
end if
Du könntest im Fehlerfall aber auch den Fehler selber abfangen... "ON ERROR Goto ..."

Gruss
sarotti

Re: Prüfen ob geöffnete Datei schreibgeschützt ist

Verfasst: Di, 14.07.2009 22:44
von oktobaer
Hallo Ihr!

Habe das "on error" und das mit getattrib ausprobiert.
Leider erkennt das Makro so nicht ob die Datei schon von einer anderem Benutzer belegt ist.
Habe immer nur 32 ausgelesen (Archivbit).

Gelöst habe ich es jetzt dadurch, dass ich beim Öffnen der Datei mit

Code: Alles auswählen

SetAttrib url,1
die Datei aktiv auf ReadOnly setze, damit weitere Anwendungen gesperrt sind.
Allerdings muss bei Schreibvorgängen und beim Speichern kurzzeitig mit

[

Code: Alles auswählen

etAttrib url,0
wieder Schreiben zugelassen werden.

Mal sehen ob sich diese Taktik in der Praxis bewährt!

Danke für Eure Hilfe!


Oktobaer