Beim Sichern Warnungsfenster verhindern
Moderator: Moderatoren
Beim Sichern Warnungsfenster verhindern
Hallo,
ich habe eine*.sxc-Datei.
Mit der wird per Makro so einiges angestellt. Es wird auch eine neue Tabelle hergestellt, in die Teile anderer eingefügt werden. Diese wird dann irgendwann als *.csv-Datei gespeichert.
Just in diesem Moment poppt immer ein kleines Fenster hoch und warnt mich, daß aber nur die aktuelle Tabelle gespeichert wurde.
Solange ich nicht auf "OK" geklickt habe, geht der Ablauf nicht weiter.
Das stört sehr. Deshalb hoffe ich, daß es eine Möglichkeit gibt, dieses Fenster zu unterdrücken.
Die Stelle, an der gesichert wird, sieht jetzt so aus:
...............
dispatcher.executeDispatch(document, ".uno:SaveAs", "", 0, args7())
...............
In der Hilfe habe ich leider nirgends etwas Erhellendes über mögliche Parameter von "Save" gefunden.
Gibt es da eine Möglichkeit?
Gruß, Hago
ich habe eine*.sxc-Datei.
Mit der wird per Makro so einiges angestellt. Es wird auch eine neue Tabelle hergestellt, in die Teile anderer eingefügt werden. Diese wird dann irgendwann als *.csv-Datei gespeichert.
Just in diesem Moment poppt immer ein kleines Fenster hoch und warnt mich, daß aber nur die aktuelle Tabelle gespeichert wurde.
Solange ich nicht auf "OK" geklickt habe, geht der Ablauf nicht weiter.
Das stört sehr. Deshalb hoffe ich, daß es eine Möglichkeit gibt, dieses Fenster zu unterdrücken.
Die Stelle, an der gesichert wird, sieht jetzt so aus:
...............
dispatcher.executeDispatch(document, ".uno:SaveAs", "", 0, args7())
...............
In der Hilfe habe ich leider nirgends etwas Erhellendes über mögliche Parameter von "Save" gefunden.
Gibt es da eine Möglichkeit?
Gruß, Hago
Hallo Hago,
Üblicherweise speicherst du ein Dokument im Basic-Code direkt, mit der Methode storeAsUrl( sUrl, aFileProperties()). Also Beispiel:
In den FileProperties gibst du zum Beispiel die Filter an und was es sonst noch so gibt.
Zum Einlesen solltest du dir das folgende Dokument zu Gemühte ziehen: http://docs.sun.com/db/doc/817-3924?l=de, ist das Sun Programmierhandbuch.
Gruss
Thomas
Ja, die gibt es schon. Allerdings nicht im dispacher-Mode - oder vielleicht dort auch, das weis ich aber nicht.In der Hilfe habe ich leider nirgends etwas Erhellendes über mögliche Parameter von "Save" gefunden.
Gibt es da eine Möglichkeit?
Üblicherweise speicherst du ein Dokument im Basic-Code direkt, mit der Methode storeAsUrl( sUrl, aFileProperties()). Also Beispiel:
Code: Alles auswählen
...
Dim oDoc as Object, sURL as String
Dim aFileProperties() as New com.sun.star.beans.propertyValue
oDoc = ThisComponent ' oder wie du es eben sonst so initalisiert
.... hier könntest du noch Eigenschaften zum Speichern definieren
sUrl = "file:///c:/irgend/ein/Pfad/test.sxc"
oDoc.storeAsUrl( sUrl, aFileProperties())
Zum Einlesen solltest du dir das folgende Dokument zu Gemühte ziehen: http://docs.sun.com/db/doc/817-3924?l=de, ist das Sun Programmierhandbuch.
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
Hallo Thomas,
danke,
so ähnlich wie Du schreibst, habe ich es inzwischen gemacht (ich habe eine zwar kleine aber verständliche Doku gefunden, sogar auf deutsch).
Seit der Dispatcher da nicht mehr mitmischt, wird gespeichert und die Fehlermeldung kommt nicht, jedoch wird der anschließende Shell- Aufruf nicht mehr ausgeführt, was bisher funktioniert hat.
Woran könnte das liegen?
So sieht das jetzt aus:
dokument.storeAsURL(sUrl1$, args7()) 'bis hier läuft alles glatt
Shell("C:\perl\bin\perl.exe ftp-upload-CSV.pl",1)
Hago
danke,
so ähnlich wie Du schreibst, habe ich es inzwischen gemacht (ich habe eine zwar kleine aber verständliche Doku gefunden, sogar auf deutsch).
Seit der Dispatcher da nicht mehr mitmischt, wird gespeichert und die Fehlermeldung kommt nicht, jedoch wird der anschließende Shell- Aufruf nicht mehr ausgeführt, was bisher funktioniert hat.
Woran könnte das liegen?
So sieht das jetzt aus:
dokument.storeAsURL(sUrl1$, args7()) 'bis hier läuft alles glatt
Shell("C:\perl\bin\perl.exe ftp-upload-CSV.pl",1)
Hago
Hallo!
gruß
Charly
Versuch es mit dem Befehl:
Jetzt sollte sich das OO-Fenster nur noch selbst schließen.
Gibt es da 'ne Möglichkeit?
Code: Alles auswählen
dokument.storeAsURL(sUrl1$, args7())
Shell.......
dokument.close(false)
Charly
Hallo,
ich habe jetzt versucht "dokument.close(false)" nach print() zu benützen.
Seltsamerweise funktioniert der Befehl da nicht.Erst kommt eine Fehlermeldung:
BASIC-Laufzeitfehler.
Es ist eine Exception aufgetreten
Type:com.sun.star.util.CloseVetoException
Message: Controller disagree ...
dann wird gedruckt, aber geschlossen wird nicht.
Übrigens: den Dispatcher benütze ich, weil sonst nach dem Eintrag in das Tabellenfeld D3 der Fokus auf dem Tabellenfeld bleibt und der Wert nicht zur Verfügung steht.
Kann mir jemand sagen, was ich ändern muss?
Gruss, Hago
ich habe jetzt versucht "dokument.close(false)" nach print() zu benützen.
Seltsamerweise funktioniert der Befehl da nicht.
Code: Alles auswählen
sub Druck
dim document as object
dim dispatcher as object
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "ToPoint"
args2(0).Value = "$D$4"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args2())
Dok = ThisComponent
Controller = Dok.CurrentController
Blatt = Controller.ActiveSheet
Zelle = Blatt.getCellRangeByName("$D$3")
Wert = Zelle.Value
dim args3(2) as new com.sun.star.beans.PropertyValue
args3(0).Name = "Copies"
args3(0).Value = Wert
args3(1).Name = "RangeText"
args3(1).Value = "1-2"
args3(2).Name = "Collate"
args3(2).Value = false
Dok.print(args3())
Dok.close(false)
BASIC-Laufzeitfehler.
Es ist eine Exception aufgetreten
Type:com.sun.star.util.CloseVetoException
Message: Controller disagree ...
dann wird gedruckt, aber geschlossen wird nicht.
Übrigens: den Dispatcher benütze ich, weil sonst nach dem Eintrag in das Tabellenfeld D3 der Fokus auf dem Tabellenfeld bleibt und der Wert nicht zur Verfügung steht.
Kann mir jemand sagen, was ich ändern muss?
Gruss, Hago
Hey Hago,
Die Lösung: Tia, entweder eine Wait() Zeile einbauen, oder besser, du gibst eine zusätzliche Option dem Print-Befehl, dass er erst die Kontrolle an den Interpreter zurückgibt, wenn er fertig ist. Also so etwas wie
Du musst natürlich den Array entsprechend anpassen. Jetzt wartet der Interpreter, bis der Drucker fertig gedruckt hat und führt erst dann die nächste Zeile - also den Close befehl - aus. Jetzt sollte es funktionieren.
Gruss
Thomas
Die Problematiik liegt in der Verwendung des Print-Befehls und des Close Befehls. Der Printbefehl bewirkt eine neue funktion, die Zeit benötigt. Der Programminterpreter wartet aber nicht, bis die Druckfunktion abgeschlossen ist, sondern geht sofort zur nächsten Zeile um den dort folgenden Code auszuführen. Da aber der Controller noch benötigt wird (zum Drucken) kann das Dokument - noch - nicht geschlossen werden. Der Befehl bewirkt eine Fehlermeldung, der Interpreter geht zur nächsten Zeile.Kann mir jemand sagen, was ich ändern muss?
Die Lösung: Tia, entweder eine Wait() Zeile einbauen, oder besser, du gibst eine zusätzliche Option dem Print-Befehl, dass er erst die Kontrolle an den Interpreter zurückgibt, wenn er fertig ist. Also so etwas wie
Code: Alles auswählen
args4(3).name = "Wait"
args4(3) = true
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
Hey Hago,
Ansosnten - selbst ausprobieren, Foren befragen (gibt auch englischsprachige), API lesen, Kommunikation mit anderen Community-Mitgliedern,
Workshop des Projektes besuchen (z.B. 5./6. 2. 05 im Linuxhotel in Essen) und so weiter. Ist viel Arbeit und Erfahrung...
Aber dein Weg ist schon gut.
Gruss
Thomas
Tia, gute Frage... zum Beispiel in meinem Buch, dass hoffentlich im April zur 2.0 auch erscheinen wird - OOo BasicWoher erfährt man eigentlich solche Details, wenn nicht im Forum?

Ansosnten - selbst ausprobieren, Foren befragen (gibt auch englischsprachige), API lesen, Kommunikation mit anderen Community-Mitgliedern,
Workshop des Projektes besuchen (z.B. 5./6. 2. 05 im Linuxhotel in Essen) und so weiter. Ist viel Arbeit und Erfahrung...
Aber dein Weg ist schon gut.
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