Seite 1 von 1
Daten in eine andere Tabelle schreiben (andere Datei)
Verfasst: Fr, 25.12.2020 18:47
von Luis2
Libreoffice 7.0.1.2 (x64)
Betriebssystem Windows 10
Hallo in die Runde,
vielleicht kann mir jemand helfen oder einen Hinweis geben wo ich ein Beispiel suche. Experimentiere jetzt schon stundenlang und komme zu keiner Lösung! Libre Makros sind mir ein großes Rätsel
.
Folgendes Problem:
Ich möchte mit einem Makro in der Datei Rechnung.ods (Tabelle "Rechnung") den String aus der Zelle A1 in eine andere ods Datei (Verlauf.ods) speichern.
Hintergrund: In A1 von Rechnung.ods steht der Name der aktellen Rechnungsdatei mit Nummer Datum usw und ich möchte in Verlauf.ods den Verlauf die History meiner Rechnungen archivieren
Also das Makro müsste in Verlauf.ods noch in Spalte A nach unten den ersten freien Platz finden und dort den String aus Rechnung.ods Tabellenblatt "Rechnung" Zelle A1 ablegen.
Vielen Dank für jegliche Hilfe
Luis
Re: Daten in eine andere Tabelle schreiben (andere Datei)
Verfasst: Sa, 26.12.2020 10:41
von F3K Total
Moin,
wenn die beiden Dateien sich im gleichen Ordner befinden, sollte folgendes Makro funktionieren, Beispieldateien anbei.
Sollte die Datei "Verlauf.ods" nicht geöffnet sein, wird sie im Hintergrund geöffnet, beschrieben, gespeichert und wieder geschlossen.
Ist sie geöffnet, wird die Zeile zugefügt.
Code: Alles auswählen
Sub Copy_A1_to_Verlauf
oDocument = ThisComponent
oSheet = oDocument.Sheets.getbyName("Rechnung")
oCell = oSheet.getcellbyposition(0,0)
sFile = oCell.String
bopen = false
oComponentsEnumeration = StarDeskTop.Components.createEnumeration
while oComponentsEnumeration.hasmoreelements
odoc = oComponentsEnumeration.nextElement
if odoc.Title = "Verlauf.ods" then
oDocVerlauf = odoc
bopen = true
endif
wend
if bopen = false then
dim args(0) as new com.sun.star.beans.PropertyValue
args(0).Name = "Hidden"
args(0).Value = false
sFolderUrl = replace(oDocument.Url,oDocument.Title,"")
sUrlVelauf = sFolderUrl & "Verlauf.ods"
oDocVerlauf = StarDeskTop.loadComponentFromUrl(sUrlVelauf,"_blank",0,args())
endif
oTargetSheet = oDocVerlauf.Sheets.getbyname("Tabelle1")
oTargetRow = oTargetSheet.Columns.getbyName("A")
oEmptyCells = oTargetRow.queryemptyCells
nStartrow = oEmptyCells.RangeAddresses(0).StartRow
otargetCell = oTargetRow.getcellbyPosition(0,nStartrow)
otargetCell.String = sFile
oDocVerlauf.Store
if bopen = false then
oDocVerlauf.close -1
endif
End Sub
Gruß R
Re: Daten in eine andere Tabelle schreiben (andere Datei)
Verfasst: Sa, 26.12.2020 18:41
von Luis2
Danke F3K Total
das funktioniert sehr gut, war direkt ein kleines Weihnachtsgeschenk
Ein Problem hätte ich noch ich will vorher (wenn es von der Logik her besser ist ginge es auch anschließend) die Vorlagedatei rechnung.ods (oder ich benutze besser das Format ots) unter NEUEM Namen in einem ANDEREN Ordner abspeichern. Das funktioniert schon mit dem Makro:
Code: Alles auswählen
Sub Rechnung_speichern
blatt = ThisComponent.CurrentController.ActiveSheet
With blatt
tmp = .getCellRangeByName("v12").String
End With
tmp2 = InputBox ("Bitte kontrolliere den Dateinamen: ","Lieber Benutzer", tmp)
ThisComponent.storeAsUrl(ConvertToURL(tmp2), Array())
End Sub
Mit der InputBox habe ich noch die Möglichkeit den Dateinamen zu ändern
Jetzt geht´s leider nicht mehr mit deinem Makrovorschlag, weil ja die Ausgangsdatei nicht mehr rechnung.ods heißt und die Verlauf.ods nicht mehr im selben Ordner liegt.
Kann ich die 2 Makros sinnvoll miteinander kombinieren, dass alles in einem Rutsch funktioniert?
Also die Rechnung speichern und die Daten in die Verlauf.ods eintragen
Viele Grüße
Luis
Re: Daten in eine andere Tabelle schreiben (andere Datei)
Verfasst: Sa, 26.12.2020 22:18
von Stephan
Jetzt geht´s leider nicht mehr mit deinem Makrovorschlag, weil ja die Ausgangsdatei nicht mehr rechnung.ods heißt und die Verlauf.ods nicht mehr im selben Ordner liegt.
dann verwende halt:
statt:
denn dann ist weiterhin die ursprüngliche Datei sichtbar.
z.B. siehe:
http://www.dannenhoefer.de/faqstarbasic ... chern.html
Das wäre hier im Konkreten wohl der eleganteste Weg.
Es gibt aber auch alternative Wege die Du selbst leicht finden könntest, wenn Du Dir die Mühe machen würdest
zu verstehen was der Code von "F3K Total" tut.
Gruß
Stephan
Re: Daten in eine andere Tabelle schreiben (andere Datei)
Verfasst: So, 27.12.2020 09:15
von F3K Total
Bitte,
habe noch einen kleinen Fehler entdeckt, damit die Datei Verlauf.ods wie beschrieben ggf. im Hintergrund geöffnet wird, muss im Code statt
natürlich
stehen.
Gruß R
Re: Daten in eine andere Tabelle schreiben (andere Datei)
Verfasst: So, 27.12.2020 19:27
von Luis2
Herzlichen Dank,
Ihr habt mir sehr geholfen!
Gruß Luis