Ja, richtig.
Vielen Dank für Deine Antwort.nitja hat geschrieben: ↑Sa 20. Apr 2024, 08:15Wie kriegst Du die Dateien in Deinen Rechner, auf dem LO läuft?
Dann landen die vermutlich in einem Verzeichnis/directory, das Du dafür vorbereitet hast?
Von dort kannst Du sie per Makro ein- bzw. auslesen und ihre Daten Zeile für Zeile verarbeiten und so weit auswerten, dass Du einen Eintrag in die eigentliche, die "Master-Tabelle" machen lassen kannst, bis die Quelldateien abgearbeitet sind … und dann das Ergebnis anschauen.
Um das im Detail zu klären, bräuchte es hier also Beispieldateien in der Form, wie Deine Datenquellen sie liefern und eine mit der (möglicherweise leeren, verkleinerten) "Master-Datei", die in etwa zeigt wo was endgültig hin geschrieben werden soll.
Im Prinzip alles genau so, wie Du beschrieben hast und dass ich das mit einem Makro lösen will, ist auch richtig.
Die Lösung in "Handarbeit" habe ich schon erst einmal so, dass ich zumindest mal alle Daten auswerten kann. Ich kann überhaupt nicht programmieren. Deshalb habe ich da auch keine großen Ambitionen, sondern will mir das alles irgendwie selbst erarbeiten. Das ganze dient also erst einmal nur zu meiner Weiterbildung und ob ich damit dann jemals mehr mache, weiß ich noch gar nicht.
Weil die Daten aus mehreren Quellen kommen, kann ich das so genau auch noch gar nicht beschreiben: Ich möchte da erst einmal einzelne kleine Schritte mit Makros lösen um dann zu verstehen, wie das aus der Handarbeit in den Makros aussieht.
Kurz zu meinem ursprünglichen Anliegen, etwas detaillierter beschrieben, ein paar kleine einzelne Makros sind auch schon funktionsfähig, teilweise noch mit Einschränkungen. Woran ich gerade arbeite ist folgendes.
In einer Zelle (A2) steht ein Datum und eine Uhrzeit als Text (!) wie folgt:
'2024/04/03 01:00:00
So kann ich das nicht richtig auswerten und deshalb teile ich das mehr oder weniger von Hand auf. Mehrere Einträge untereinander dann mit der Funktion aus dem Menü Daten --> "Text in Spalten". aufteilen.
Im Endergebnis steht dann in der Zelle A2 ein "echtes" Datum im Format: 03.04.2024 (soweit bin ich aber noch gar nicht und will da auch noch nicht anfangen)
In der Zelle B2 steht dann idealerweise die Uhrzeit: 01:00:00
Ich habe bereits ein Makro, welches die letzten 8 Zeichen (also die Uhrzeit mit den Doppelpunkten) in die Zelle B2 kopiert und dann aus der Zelle A2 löscht.
Mittlerweile ist das Ergebnis in B2 eine Dezimalzahl die ich auch von Hand Im Format Uhrzeit formatieren kann. Die stimmt dann mit der ursprünglichen Uhrzeit im Text der Zelle A2 überein. Soweit mein Stand.
Was ich nicht hinbekomme, ist dass die Zelle B2 nicht nur die Dezimalzahl enthält, sondern bereits als Uhrzeit formatiert ist. Ich kann die Zelle dann ja auch selbst formatieren und wenn das grundsätzlich geht, sollte das ja auch in einem Makro klappen. Dachte ich...

Genauer angeschaut hab ich das noch nicht, ich hoffe aber, dass mich das weiter bringt.
Wichtig wäre für mich, dass ich die einzelnen kleinen Aufgaben nach und nach als kleine, überschaubare Makros habe, damit ich jeweils verstehe, was da passiert. Ob ich dann das eine oder andere kombiniere oder verwerfe, möchte ich dann am Ende entscheiden . Deshalb beschreibe ich auch hier nur einzelne Teile, damit sich niemand die Mühe macht, mir eine Lösung zu programmieren, die ich nachher gar nicht verwende. Da ist ja dann keinem geholfen

Ich poste hier mal das Makro, das bis jetzt funktioniert. Wie gesagt, das Ergebnis in der Zelle B2 ist dann eine Dezimalzahl. Die Zelle kann dann formatiert werden, so dass die korrekte Uhrzeit auch dargestellt wird.
Vielleicht noch ein wichtiger Hinweis.
Die Datei kommt aus einem Export als Excel-Datei. Die Bearbeitung bis hier hin erfolgt in LibreOffice Calc. Ich weiß nicht ob das in diesem konkreten Fall wichtig ist, will es aber noch erwähnt haben.
Und: Ich habe nicht immer so viel Zeit und Power um da kontinuierlich dran zu bleiben. Es kann also auch maletwas dauern, bis ich einzelne Schritte nachvollziehen kann

Vielen Dank auf jeden Fall mal bis hier hin und ier ist das Makro, das bisher zumindest mal läuft:
Code: Alles auswählen
Sub CopyLast8CharactersAndConvertToTime1
Dim oSheet As Object ' Deklaration einer Variablen für das aktive Tabellenblatt
Dim oCellA As Object ' Deklaration einer Variablen für Zelle A2
Dim oCellB As Object ' Deklaration einer Variablen für Zelle B2
Dim sText As String ' Deklaration einer Variablen für den Text in Zelle A2
' Aktives Tabellenblatt zuweisen
oSheet = ThisComponent.CurrentController.ActiveSheet
' Zelle A2 auswählen
oCellA = oSheet.getCellRangeByName("A2")
' Zelle B2 auswählen
oCellB = oSheet.getCellRangeByName("B2")
' Text aus Zelle A2 holen und in Variable sText speichern
sText = oCellA.getString()
' Überprüfen, ob der Text in Zelle A2 mindestens 8 Zeichen lang ist
If Len(sText) >= 8 Then
' Die letzten 8 Zeichen des Textes in eine "echte" Uhrzeit umwandeln und in Zelle B2 einfügen
oCellB.setValue(TimeValue(Right(sText, 8)))
' Die letzten 8 Zeichen aus der Ursprungszelle löschen
oCellA.setString(Left(sText, Len(sText) - 8))
Else
' Eine Meldung anzeigen, wenn der Text in Zelle A2 kürzer als 8 Zeichen ist
MsgBox "Der Text in Zelle A2 ist kürzer als 8 Zeichen."
End If
End Sub