einen bestimmten Bereich aus einen Tabellenblatt mit datum speichern
Moderator: Moderatoren
-
- ***
- Beiträge: 74
- Registriert: Fr, 12.05.2017 15:31
einen bestimmten Bereich aus einen Tabellenblatt mit datum speichern
Hallo!
Ich versuche gerade aus einer mehrseitigen Calc-Datei
einen bestimmten Bereich aus einem Tabellenblatt zu zu kopieren,
diesen in eine Datei, in einem vorgegebenen Pfad, die in dem Dateinamen
auch das Datum mit Uhrzeit beinhalten sollte, zu speichern.
Nach dem Speichern sollen die kopierten Daten im Original gelöscht werden!
Tabellenblatt = Abgabe (lfd.Nummer 24 im Dokument)
Bereich ist Variabel (in der Länge) grob aber $A$12:$G$300
Ich habe schon eine Weile gesucht und mich probiert, konnte aber bis jetzt
nicht wirklich fündig werden.
Wäre echt schön, wenn man mir hier helfen könnte.
cya Ingo
Ich versuche gerade aus einer mehrseitigen Calc-Datei
einen bestimmten Bereich aus einem Tabellenblatt zu zu kopieren,
diesen in eine Datei, in einem vorgegebenen Pfad, die in dem Dateinamen
auch das Datum mit Uhrzeit beinhalten sollte, zu speichern.
Nach dem Speichern sollen die kopierten Daten im Original gelöscht werden!
Tabellenblatt = Abgabe (lfd.Nummer 24 im Dokument)
Bereich ist Variabel (in der Länge) grob aber $A$12:$G$300
Ich habe schon eine Weile gesucht und mich probiert, konnte aber bis jetzt
nicht wirklich fündig werden.
Wäre echt schön, wenn man mir hier helfen könnte.
cya Ingo
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: einen bestimmten Bereich aus einen Tabellenblatt mit datum speichern
Willkommen im Forum!
Welchen OpenOffice Ableger (OOo/AOO/LO) und Version nutzt Du?
Zeigst Du uns Deinen Code?
Wo "hapert" es?
Du solltest uns nur beschreiben können, *wo* Du Schwierigkeiten hast - oder *was* nicht klappt.
Welchen OpenOffice Ableger (OOo/AOO/LO) und Version nutzt Du?
In welcher Programmiersprache?little fingers hat geschrieben: ↑Mi, 17.05.2017 21:58Ich habe schon eine Weile gesucht und mich probiert
Zeigst Du uns Deinen Code?
Wo "hapert" es?
Gerne...
Du solltest uns nur beschreiben können, *wo* Du Schwierigkeiten hast - oder *was* nicht klappt.
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)
-
- ***
- Beiträge: 74
- Registriert: Fr, 12.05.2017 15:31
Re: einen bestimmten Bereich aus einen Tabellenblatt mit datum speichern
Hallo komma4,
Vielen Dank für das herzliche Willkommen!
Und Danke für die Mühe!!
Naiv, wie ich in der Materie bin, dachte ich eigentlich, dass ich mich da gut verstanden habe ,
so wie es versucht habe zu erklären! Im Nachhinein betrachtet, musste ich feststellen, dass es schon schwierig ist,
jemanden zu erklären, was man möchte, wenn man eigentlich keine Ahnung hat.
Also Details:
Ich nutze
Libreoffice 5.2.6.2
und hier ist das "gefundene" Codegeschnipsel
Zur Zeit ist es so, dass tatsächlich die Daten in die SAbgabe.csv übertragen werden. Wo ich hier allerdings möchte, dass automatisch das Datum Bestandteil des Dateinamens werden soll.
Ferner werden die Daten aus der "$Statistik-Erfassung.$A$12:$G$330" nach erfolgter Abgabe noch nicht gelöscht.
Vielen Dank für die Hilfe!
cya Ingo
Vielen Dank für das herzliche Willkommen!
Und Danke für die Mühe!!
Naiv, wie ich in der Materie bin, dachte ich eigentlich, dass ich mich da gut verstanden habe ,
so wie es versucht habe zu erklären! Im Nachhinein betrachtet, musste ich feststellen, dass es schon schwierig ist,
jemanden zu erklären, was man möchte, wenn man eigentlich keine Ahnung hat.
Also Details:
Ich nutze
Libreoffice 5.2.6.2
und hier ist das "gefundene" Codegeschnipsel
Ich versuche es mal.Du solltest uns nur beschreiben können, *wo* Du Schwierigkeiten hast - oder *was* nicht klappt.
Code: Alles auswählen
REM ***** BASIC *****
sub Abgabe1
' Alle Zeilen löschen, do in Zeile C keine Stellplätze definiert sind!!
' nur einmal in der Woche Leerzeilen löschen!!! (Sonntag)
oDoc = ThisComponent
oSheets = oDoc.Sheets
oSheet = oSheets.getbyName("Statistik-Abgabe")
oRows = oSheet.getRows
Goto Start
Start:
for i = 330 to 12 step -1 ' zählt rückwärts , wegen INDEX
oCell = oSheet.getCellByPosition(2,i)
if oCell.Value = 0 Then
oRows.removeByIndex(i,1)
End if
Next i
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 = "Nr"
args1(0).Value = 24
dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args1())
rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "ToPoint"
args2(0).Value = "$Statistik-Erfassung.$A$12:$G$330" ' Bereich der erfasst werden soll'
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args2())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
rem ----------------------------------------------------------------------
dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "Nr"
args4(0).Value = 25
dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args4())
rem ----------------------------------------------------------------------
dim args5(0) as new com.sun.star.beans.PropertyValue
args5(0).Name = "ToPoint"
args5(0).Value = "$A$1"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args5())
rem ----------------------------------------------------------------------
dim args6(5) as new com.sun.star.beans.PropertyValue
args6(0).Name = "Flags"
args6(0).Value = "SVDNT"
args6(1).Name = "FormulaCommand"
args6(1).Value = 0
args6(2).Name = "SkipEmptyCells"
args6(2).Value = false
args6(3).Name = "Transpose"
args6(3).Value = false
args6(4).Name = "AsLink"
args6(4).Value = false
args6(5).Name = "MoveMode"
args6(5).Value = 4
dispatcher.executeDispatch(document, ".uno:InsertContents", "", 0, args6())
rem ------------- Speichern als CSV --------------
Dim myProps(1) as New com.sun.star.beans.PropertyValue
sPath="P:/statistik/SAbgabe.csv"
' Automatisch mit Datum in Dateinamen wäre hilfreich z.B. 2017-05-21_SAbgabe.csv (wobei die Datei auch *.ods sein kann!)
sUrl=ConvertToUrl (sPath)
myProps(0).Name = "FilterName"
myProps(0).Value ="Text - txt - csv (StarCalc)"
myProps(1).Name="FilterOptions"
myProps(1).Value ="59/9,34,33,1,1/1/2/1" 'string mit den Optionen
myDoc = thisComponent
myDoc.storeAsUrl(sUrl,myProps())
End Sub
Ferner werden die Daten aus der "$Statistik-Erfassung.$A$12:$G$330" nach erfolgter Abgabe noch nicht gelöscht.
Vielen Dank für die Hilfe!
cya Ingo
Re: einen bestimmten Bereich aus einen Tabellenblatt mit datum speichern
Hallo,
das Datumsproblem im Dateinamen lässt sich mit folgender Zeile lösen:
Eine mehr direkte Art des Exports sollte mit folgendem Makro funktionieren:
Der Bereich A12:G330 wird zeilenweise in eine Textdatei geschrieben und anschließend gelöscht (ich nehme mal an, dass dort Zahlen, Daten, Strings stehen; Formeln würden z. B. nicht gelöscht).
Die Datei wird ohne Nachfrage erstellt und eine ggf. vorhandene Datei überschrieben.
das Datumsproblem im Dateinamen lässt sich mit folgender Zeile lösen:
Code: Alles auswählen
sPfad="P:/statistik/" & format(now,"yyyy-mm-dd") & "_SAbgabe.csv"
Code: Alles auswählen
sub abgabe_direkt
'Festlegen des Zeilenendezeichens
eol=CHR$(10)
'Textdatei vorbereiten
oFileWrite = CreateUnoService("com.sun.star.ucb.SimpleFileAccess")
oOutputStream = createUnoService("com.sun.star.io.TextOutputStream")
oOutputStream.Encoding = "UTF-8"
'Dateinamen erstellen
sPfad="P:/statistik/" & format(now,"yyyy-mm-dd") & "_SAbgabe.csv"
'Datei öffnen zum Schreiben
oStream = oFileWrite.openFileWrite(sPfad)
oOutputStream.setOutputStream(oStream)
'Daten auslesen
oDoc=thiscomponent
oBereich=oDoc.Sheets.getbyName("Statistik-Abgabe").getCellRangeByName("A12:G330")
aDaten=oBereich.getDataArray
for i=0 to ubound(aDaten)
if aDaten(i)(2)<>0 then 'nur Zeilen mit Zelle C ungleich Null schreiben
oOutputStream.writestring(join(aDaten(i),";") & eol)
end if
next
'Datei schließen
oOutputStream.closeOutput()
'Bereich Inhalte löschen
oBereich.clearContents(1+2+4)'gelöscht werden Zahl, Datum, String
end sub
Die Datei wird ohne Nachfrage erstellt und eine ggf. vorhandene Datei überschrieben.
Gruß,
mikeleb
mikeleb
-
- ***
- Beiträge: 74
- Registriert: Fr, 12.05.2017 15:31
Re: einen bestimmten Bereich aus einen Tabellenblatt mit datum speichern
hi mikeleb!!
Super Danke funzt echt schon spitzenmässig!!
I´m very happy !!!
Allerdings ist in Spalte A der Abgabe die Zahl als Datum eingetragen,
kann man das auch als Datum übergeben??
Vielen Dank jetzt schon, für die bisherige Umsetzung!!
cya Ingo
Super Danke funzt echt schon spitzenmässig!!
I´m very happy !!!
Allerdings ist in Spalte A der Abgabe die Zahl als Datum eingetragen,
kann man das auch als Datum übergeben??
Vielen Dank jetzt schon, für die bisherige Umsetzung!!
cya Ingo
Re: einen bestimmten Bereich aus einen Tabellenblatt mit datum speichern
Hallo,
ergänze in der Schleife eine Code-Zeile:
ergänze in der Schleife eine Code-Zeile:
Code: Alles auswählen
if aDaten(i)(2)<>0 then 'nur Zeilen mit Zelle C ungleich Null schreiben
aDaten(i)(0)=cdate(aDaten(i)(0))
oOutputStream.writestring(join(aDaten(i),";") & eol)
end if
Gruß,
mikeleb
mikeleb
-
- ***
- Beiträge: 74
- Registriert: Fr, 12.05.2017 15:31
Re: einen bestimmten Bereich aus einen Tabellenblatt mit datum speichern
Super, vielen Dank
hat funktioniert!
Du hast mir sehr geholfen!!
cya Ingo
hat funktioniert!
Du hast mir sehr geholfen!!
cya Ingo
-
- ***
- Beiträge: 74
- Registriert: Fr, 12.05.2017 15:31
Re: einen bestimmten Bereich aus einen Tabellenblatt mit datum speichern
Hallo
Wie müsste der Befehl lauten, wenn ich die entsprechenden Zeilen
löschen möchte, nicht nur den Content?
cya Ingo
Code: Alles auswählen
oBereich.clearContents(1+2+4)'gelöscht werden Zahl, Datum, String
löschen möchte, nicht nur den Content?
cya Ingo
Re: einen bestimmten Bereich aus einen Tabellenblatt mit datum speichern
Hallo,
Code: Alles auswählen
oBereich.rows.removebyindex(0,oBereich.rows.count)
Gruß,
mikeleb
mikeleb
-
- ***
- Beiträge: 74
- Registriert: Fr, 12.05.2017 15:31
Re: einen bestimmten Bereich aus einen Tabellenblatt mit datum speichern
Danke Dir!
Habe ich direkt eingebaut, klappt aber leider nicht!
Ziel ist es, dass die Daten, die schon außerhalb des Bereichs A12:G330
angesammelt wurden, nach oben rutschen!
Das passiert leider nicht!
Hast vielleicht noch ne andere Lösung?
cya Ingo
Sorry Klappt doch!!! Vielen, Vielen Dank!!!!!
Habe ich direkt eingebaut, klappt aber leider nicht!
Ziel ist es, dass die Daten, die schon außerhalb des Bereichs A12:G330
angesammelt wurden, nach oben rutschen!
Das passiert leider nicht!
Hast vielleicht noch ne andere Lösung?
cya Ingo
Sorry Klappt doch!!! Vielen, Vielen Dank!!!!!