einzelnes Tabellenblatt speichern, Dateiname generieren
Moderator: Moderatoren
einzelnes Tabellenblatt speichern, Dateiname generieren
Hallo OO-Gemeinde,
ich hoffe ihr könnt mir helfen.
Und zwar habe ich eine Datei mit 6 Tabellenblättern. Allerdings wird nur ein Blatt bearbeitet, die anderen 5 sind nur Hilfsdaten mit ner Menge an Daten.
Aus Platz gründen und um Ladezeiten zu vermeiden möchte ich nach fertiger Bearbeitung allerdings nur das eine Blatt speichern.
Zuvor muss ich allerdings die Formeln (welche auf die anderen Blätter zugreifen) in Werte ändern (das hab ich noch hinbekommen, mitn Makro).
Hab auch schon versucht mit einem Makro die nicht benötigten Tabellen anschließend zu löschen, allerdings speichert ers dann nicht Automatisch unter einem generierten Namen.
Danke schonmal
ich hoffe ihr könnt mir helfen.
Und zwar habe ich eine Datei mit 6 Tabellenblättern. Allerdings wird nur ein Blatt bearbeitet, die anderen 5 sind nur Hilfsdaten mit ner Menge an Daten.
Aus Platz gründen und um Ladezeiten zu vermeiden möchte ich nach fertiger Bearbeitung allerdings nur das eine Blatt speichern.
Zuvor muss ich allerdings die Formeln (welche auf die anderen Blätter zugreifen) in Werte ändern (das hab ich noch hinbekommen, mitn Makro).
Hab auch schon versucht mit einem Makro die nicht benötigten Tabellen anschließend zu löschen, allerdings speichert ers dann nicht Automatisch unter einem generierten Namen.
Danke schonmal
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: einzelnes Tabellenblatt speichern
Das solltest Du mir/uns mal erklären:dcssd hat geschrieben:allerdings speichert ers dann nicht Automatisch unter einem generierten Namen.
wie generierst Du den Namen, wie übergibst Du ihn der Calc-Datei?
Welche OOo Version, welches Betriebssystem.... wäre vllt.auch noch interessant
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Re: einzelnes Tabellenblatt speichern
Betriebsystem ist Winxp 32
OO- Version 3.2
zu dem speichern, das klingt wahrscheinlich schwieriger als es eigentlich ist.
Aus den eingegebenen Daten setzt sich wie eine Fortlaufende Nummer zusammen aus verschiedensten Daten (Nummer, Abmessung, Datum)
Dem Makro hab ich zugewiesen, dass er diese Fortlaufende Nummer (welche immer anders ist) als Speichername nehmen soll. Allerdings will er die Datei unter dem aktuellen Namen speichern und bringt ne Fehlermeldung (zum glück, sonst wäre ja alles weg)
Hoffe ich konnte es halbwegs erklären.
OO- Version 3.2
zu dem speichern, das klingt wahrscheinlich schwieriger als es eigentlich ist.
Aus den eingegebenen Daten setzt sich wie eine Fortlaufende Nummer zusammen aus verschiedensten Daten (Nummer, Abmessung, Datum)
Dem Makro hab ich zugewiesen, dass er diese Fortlaufende Nummer (welche immer anders ist) als Speichername nehmen soll. Allerdings will er die Datei unter dem aktuellen Namen speichern und bringt ne Fehlermeldung (zum glück, sonst wäre ja alles weg)
Hoffe ich konnte es halbwegs erklären.
Re: einzelnes Tabellenblatt speichern
Hallo dcssd
wenn du das öfter vorhast und ich dein Anliegen richtig verstehe
würde ich es einmal mit 2 Calc-Dateien und externen Verknüpfungen versuchen.
Dann kannst du die "ErgebnissTabelle" (Datei_1) separat anlegen und speichern
und die Hilfsdaten (Datei_2) werden transparent im Hintergrund geladen ......
nah, wie wäre es damit !?
wenn du das öfter vorhast und ich dein Anliegen richtig verstehe
würde ich es einmal mit 2 Calc-Dateien und externen Verknüpfungen versuchen.
Dann kannst du die "ErgebnissTabelle" (Datei_1) separat anlegen und speichern
und die Hilfsdaten (Datei_2) werden transparent im Hintergrund geladen ......
nah, wie wäre es damit !?
LG
clag
nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
clag
nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: einzelnes Tabellenblatt speichern
Ja, dass schon.dcssd hat geschrieben:Hoffe ich konnte es halbwegs erklären.
Um das nachvollziehen zu können benötigen wir aber Einsicht in den Code... bitte hier einstellen (mit CODE-tags versehen, zwecks Lesbarkeit).
Vielleicht können Dir die Kollegen hier zwischenzeitlich weiter helfen, bin nun erstmal bei einer zweistündigen Ölmassage, dann beim Abendessen (dauert auch 2 Std.), anschl. treffe ich Kollegen in der Stadt... wird dauern, bis ich wieder hier am Computer bin.
Moderation,4: Werde den Thread gleich in den BASIC-Bereich verschieben.
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Re: einzelnes Tabellenblatt speichern, Dateiname generieren
sooo hallo,
tut mir leid das ich so lange hab warten lasse, ich wurde in dem WM-Urlaub geschickt.
Hier nun der bisherige Code,
(Hoffe das sind Code-tags)
Wenn jemand da eine Idee hat wäre es schön wenn ers auch schreiben würde.
Ist allerdings auch derzeit nur ein Nebenprojekt, hat also keine Eile.
Vielen Dank im Voraus schonmal.
Edit: @clag
Danke für die Antwort, allerdings funktioniert das leider nicht, da in den Hilfstabellen auch rein geschrieben wird (Es handelt sich u.a. um 3 große Tabllen mit gleichem Aufbei, aber anderen Inhalt, in denen mithilfe eines Sverweises (das Suchkriterium wird eingetragen) die benötigten Werte in der ersten Tabelle übernommen werden.) (oha)
tut mir leid das ich so lange hab warten lasse, ich wurde in dem WM-Urlaub geschickt.

Hier nun der bisherige Code,
Code: Alles auswählen
REM ***** BASIC *****
sub Main
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
end sub
sub Speichern1
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$A$1:$G$63"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
rem ----------------------------------------------------------------------
rem dispatcher.executeDispatch(document, ".uno:Open", "", 0, Array())
end sub
Wenn jemand da eine Idee hat wäre es schön wenn ers auch schreiben würde.
Ist allerdings auch derzeit nur ein Nebenprojekt, hat also keine Eile.
Vielen Dank im Voraus schonmal.
Edit: @clag
Danke für die Antwort, allerdings funktioniert das leider nicht, da in den Hilfstabellen auch rein geschrieben wird (Es handelt sich u.a. um 3 große Tabllen mit gleichem Aufbei, aber anderen Inhalt, in denen mithilfe eines Sverweises (das Suchkriterium wird eingetragen) die benötigten Werte in der ersten Tabelle übernommen werden.) (oha)
Re: einzelnes Tabellenblatt speichern, Dateiname generieren
Hat keiner ne Idee wie und ob das funktionieren könnte?
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: einzelnes Tabellenblatt speichern, Dateiname generieren
Was klappt denn nun nicht - wie weit bist Du?
Werde aus dem Dispatcher-Code nicht schlau... da wird nur ein bestimmter Bereich (bis G63?) kopiert....
Werde aus dem Dispatcher-Code nicht schlau... da wird nur ein bestimmter Bereich (bis G63?) kopiert....
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Re: einzelnes Tabellenblatt speichern, Dateiname generieren
hallo Komma4
bin nicht viel weiter, eigentlich gar nicht.
der bereich bis "g36" ist der Bereich einer A4 Seite, die ich veruscht hatte so zu kopieren und in ein neues Dokument einfügen wollte. (Damits alleine steht)
Derzeit versuche ich über einen indirekten Verknüpfung mir vll 2 Tabellen zu sparen, aber das funktioniert noch nicht. Mit dem Basic komm ich nicht klar
Edit: Jetzt funktioniert es, also das mit dem indirekten Verknüpfen, spart aber grademal 100 kb, also leider nutzlos. Am besten wäre es schon wenn ich irgendwie das erte Tabellenblatt einzeln speichern könnte.
bin nicht viel weiter, eigentlich gar nicht.
der bereich bis "g36" ist der Bereich einer A4 Seite, die ich veruscht hatte so zu kopieren und in ein neues Dokument einfügen wollte. (Damits alleine steht)
Derzeit versuche ich über einen indirekten Verknüpfung mir vll 2 Tabellen zu sparen, aber das funktioniert noch nicht. Mit dem Basic komm ich nicht klar

Edit: Jetzt funktioniert es, also das mit dem indirekten Verknüpfen, spart aber grademal 100 kb, also leider nutzlos. Am besten wäre es schon wenn ich irgendwie das erte Tabellenblatt einzeln speichern könnte.
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: einzelnes Tabellenblatt speichern, Dateiname generieren
Möchte gerne nochmal auf Dein Anfangsposting zurück kommen.dcssd hat geschrieben:möchte ich nach fertiger Bearbeitung allerdings nur das eine Blatt speichern.
Wie wäre es denn den Datenbereich "bis G63" (ab A1?) als PDF zu exportieren? Sollte (bei reinen Zahlen/Texten) gegenüber einem ODF-Format auch ein Platzgewinn bringen (=> schnellere Ladezeit).
Und: wie sollte der Name zum Speichern denn "generiert" werden?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Re: einzelnes Tabellenblatt speichern, Dateiname generieren
Die Idee mit der PDF ist nicht so schlecht, allerdings sollte die Datei nachträglich noch bearbeitbar bleiben. So müsste ich ja immer die "Grunddatei" öffnen und alles neu eingeben, nur wegen (angenommen) einer Änderung.
ja die Seite geht von A1 bis G36
generiert ist vll der falsche Begriff. Er Soll aus einer Zelle einen Text nehmen und dann automatisch speichern (das kopieren in die Zwischenablage geht)
Was nicht geht, und was ich mit generieren meinte, Ein Makro soll sich diesen Speichernamen nehmen und dann auch darunter im gleichen Ordner abspeichern (funktionier bisher nur soweit dass das Speichern-Fenster auf ist und der Name in der Zwischenablage ist). Das ist zwar so auch ganz ok, allerdings dachte ich, wenn ich einmal nachfrage, frag ich das gleich mit. (Kurz: "Speichern unter" mit aus Zelle genommenen Namen per Makro). Die Zelle wäre N4 (in der ist allerdings ne Formel)
ja die Seite geht von A1 bis G36
generiert ist vll der falsche Begriff. Er Soll aus einer Zelle einen Text nehmen und dann automatisch speichern (das kopieren in die Zwischenablage geht)
Was nicht geht, und was ich mit generieren meinte, Ein Makro soll sich diesen Speichernamen nehmen und dann auch darunter im gleichen Ordner abspeichern (funktionier bisher nur soweit dass das Speichern-Fenster auf ist und der Name in der Zwischenablage ist). Das ist zwar so auch ganz ok, allerdings dachte ich, wenn ich einmal nachfrage, frag ich das gleich mit. (Kurz: "Speichern unter" mit aus Zelle genommenen Namen per Makro). Die Zelle wäre N4 (in der ist allerdings ne Formel)
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: einzelnes Tabellenblatt speichern, Dateiname generieren
Also - nach dem Ändern musst Du Speichern, ob Du das als Calc oder PDF machst spielt keine Rolle.dcssd hat geschrieben:Die Idee mit der PDF ist nicht so schlecht, allerdings sollte die Datei nachträglich noch bearbeitbar bleiben. So müsste ich ja immer die "Grunddatei" öffnen und alles neu eingeben, nur wegen (angenommen) einer Änderung.
Der Einfachheit halber habe ich nun aufgezeichnet:
* das Definieren eines Druckbereichs
* das Exportieren als PDF - dabei wird der Dateiname aus N4 des aktuellen Blattes geholt.
Anzupassen im Skript sind durch Dich
* der Name des Verzeichnisses, wo die PDF abgelegt werden soll (erste Zeile; Windows-Syntax bspw. "d:/daten/verzeichnis/")
Zum Ausführen auf die auszugebende Seite (Tabellenblatt) gehen und Makro laufen lassen.
Code: Alles auswählen
' Linux: vom root-Verzeichnis aus
' Windows: bspw. d:/daten/2010/
CONST cVerzeichnis = "zentrale/firma/daten/2010/"
sub print_Calc2PDF
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$A$1:$G$36"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:DefinePrintArea", "", 0, Array())
rem ----------------------------------------------------------------------
sBlattName = document.Controller.ActiveSheet.Name
sZellwertN4 = _
ThisComponent.Sheets().getByName( sBlattName ).getCellRangeByName( "N4" ).String
dim args3(1) as new com.sun.star.beans.PropertyValue
args3(0).Name = "URL"
args3(0).Value = "file:///" & cVerzeichnis & sZellwertN4 & ".pdf"
args3(1).Name = "FilterName"
args3(1).Value = "calc_pdf_Export"
dispatcher.executeDispatch(document, ".uno:ExportDirectToPDF", "", 0, args3())
end sub
Das Makro in einer STANDARD-Bibliothek Deiner OOo-Installation abgelegt und mit einer freien Tastenkombination verbunden: fertig!
Kommst Du damit zurecht?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Re: einzelnes Tabellenblatt speichern, Dateiname generieren
Danke erstmal
habs eingefügt und auf ne Schaltfläche gelegt,
bekomme allerdings leider nen Fehler:
BASIC-Laufzeitfehler.
Eigenschaft oder Methode nicht gefunden: CurrentController.
bei dieser Zeile:
habs eingefügt und auf ne Schaltfläche gelegt,
bekomme allerdings leider nen Fehler:
BASIC-Laufzeitfehler.
Eigenschaft oder Methode nicht gefunden: CurrentController.
bei dieser Zeile:
Code: Alles auswählen
sBlattName = document.CurrentController.ActiveSheet.Name
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: einzelnes Tabellenblatt speichern, Dateiname generieren
nehme das Current aus der Anweisung raus:
Werde es gleich oben korrigieren - kommt davon, wenn man mit anderen Testdaten arbeitet
Code: Alles auswählen
sBlattName = document.Controller.ActiveSheet.Name
Werde es gleich oben korrigieren - kommt davon, wenn man mit anderen Testdaten arbeitet

Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Re: einzelnes Tabellenblatt speichern, Dateiname generieren
okee das ging erstmal,
bis der nächste Fehler kam.. (langsam wirds peinlich das ich aber auch garnix über das zeug weiß
)
Fehler beim Speichern des Dokumentes Vorlage Prod
Die Operation auf \\.\ wurde mit einem ungültigen Parameter gestartet.

bis der nächste Fehler kam.. (langsam wirds peinlich das ich aber auch garnix über das zeug weiß

Fehler beim Speichern des Dokumentes Vorlage Prod
Die Operation auf \\.\ wurde mit einem ungültigen Parameter gestartet.
