Diverse Operationen muss ich auf ein schreibgeschützes Dokument anwenden.
Die Datei liegt ReadOnly auf einen Fileserver, kann ich den Dokumentenschutz irgendwie ausschalten ohne es an einem anderen Ort zu speichern?
Verändern eines schreibgeschüzten Dokumentes
Moderator: Moderatoren
Hey Powerede,
Mit der Funktion GetAttr(Pfad) kannst du die Dateiattribute auslesen, mit SetAttr(Pfad, attr) die Attribute setzen - vorausgesetzt, der Server erlaubt das!
Biede Basic-Funktionen sind in der Hilfe beschrieben - da solltest du weiterkommen. Aber bedenke etwas: Die Funktionen favorisieren die Windows-Struktur. Unix/Linux mit dem etwas differenzierteren Modell werden nur ganz pauschal unterstützt - Attribut = 1 (read only) -> "r..r..r..", Attribut = 0 (normal) -> "rwxrwxrwx".
Gruss
Thomas
Theoretisch ja. Aber......kann ich den Dokumentenschutz irgendwie ausschalten..
Mit der Funktion GetAttr(Pfad) kannst du die Dateiattribute auslesen, mit SetAttr(Pfad, attr) die Attribute setzen - vorausgesetzt, der Server erlaubt das!
Biede Basic-Funktionen sind in der Hilfe beschrieben - da solltest du weiterkommen. Aber bedenke etwas: Die Funktionen favorisieren die Windows-Struktur. Unix/Linux mit dem etwas differenzierteren Modell werden nur ganz pauschal unterstützt - Attribut = 1 (read only) -> "r..r..r..", Attribut = 0 (normal) -> "rwxrwxrwx".
Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Das Dokument ist tatsächlich serverseitig absichtlich mit dem Schreibschutz versehen.
Meine Lösung sieht nun wie folgt aus:
Das funktioniert soweit.
Was mich aber noch sehr stört ist, dass ich das Speichern auf thisComponent und nicht auf oDoc ausführe.
Kann ich das auch auf oDoc ausführen, denn dann erwische ich in jedem Fall das richtige Dokument?
Meine Lösung sieht nun wie folgt aus:
Code: Alles auswählen
'Oeffnen der schreibgeschuetzten Datei
oDoc= StarDesktop.loadComponentFromURL(ConvertToURL(DATEINAME_READONLY), "_blank", 0, Array())
'Speichern der Datei
dim args(0) as new com.sun.star.beans.PropertyValue
myUrl= ConvertToUrl(DATEINAME_NEU)
thisComponent.storeasurl(myUrl,args())
Was mich aber noch sehr stört ist, dass ich das Speichern auf thisComponent und nicht auf oDoc ausführe.
Kann ich das auch auf oDoc ausführen, denn dann erwische ich in jedem Fall das richtige Dokument?
Hey Powerede,
Wenn du einen leeren Array übergibst, reicht ohne weiteres
Dim args()
da brauchst du kein spezielles Objekt erzeugen.
Gruss
Thomas
Sicher. Warum nicht? Das Dokument unterstützt StoreAsURL(), kannst du also direkt darauf ausführen.Kann ich das auch auf oDoc ausführen, denn dann erwische ich in jedem Fall das richtige Dokument?
Wenn du einen leeren Array übergibst, reicht ohne weiteres
Dim args()
da brauchst du kein spezielles Objekt erzeugen.
Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic