von little fingers » So, 21.05.2017 16:02
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
Du solltest uns nur beschreiben können, *wo* Du Schwierigkeiten hast - oder *was* nicht klappt.
Ich versuche es mal.
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
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
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 :roll: ,
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
[quote]Du solltest uns nur beschreiben können, *wo* Du Schwierigkeiten hast - oder *was* nicht klappt.[/quote]
Ich versuche es mal.
[code]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
[/code]
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