❤️ Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! ❤️
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱
🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀
>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗
Bestimmte Daten aus sehr vielen ODT-Dateien auslesen
Re: Bestimmte Daten aus sehr vielen ODT-Dateien auslesen
Nochmals danke.
Bei der Änderung scheint es ein Problem zu geben.
Das gibt nun eine "Runtime Exception" aus, wenn ich es richtig verstehe in dieser Zeile:
Thiscomponent.Sheets(0).getcellrangebyposition(0,0,4,n).setDataArray(adressen)
D.h. es läuft zuerst etwa zwei Minuten lang durch (ohne etwas zu schreiben, das war auch bei der funktionierenden Version so), aber statt am Ende dann die Tabelle zu füllen kommt die Fehlermeldung.
Type: com.sun.star.uno.RuntimeException Nessage: .
Also nicht sehr aussagekräftig fürchte ich.
Bei der Änderung scheint es ein Problem zu geben.
Das gibt nun eine "Runtime Exception" aus, wenn ich es richtig verstehe in dieser Zeile:
Thiscomponent.Sheets(0).getcellrangebyposition(0,0,4,n).setDataArray(adressen)
D.h. es läuft zuerst etwa zwei Minuten lang durch (ohne etwas zu schreiben, das war auch bei der funktionierenden Version so), aber statt am Ende dann die Tabelle zu füllen kommt die Fehlermeldung.
Type: com.sun.star.uno.RuntimeException Nessage: .
Also nicht sehr aussagekräftig fürchte ich.
Re: Bestimmte Daten aus sehr vielen ODT-Dateien auslesen
Hallo,
mein Fehler.
Anstelle von
müsste es kurz
sein... 
mein Fehler.
Anstelle von
Code: Alles auswählen
adressen(i)=array(atmp)
Code: Alles auswählen
adressen(i)=atmp

Gruß,
mikele
mikele
Re: Bestimmte Daten aus sehr vielen ODT-Dateien auslesen
Danke - die Version wirft noch den selben Fehler, füllt aber dafür interessanterweise wieder die Tabelle.
Allerdings wird die Tabelle noch immer so gefüllt wie in der ursprünglichen Version, also alles in Spalte A.
Ebenfalls spannend: Jetzt kriege ich 1890 Zeilen (statt zuvor 1926). D.h. dieses mal sind wir näher an den 1887 (es sind effektiv 1887, nicht 1888 wie zuvor von mir behauptet) ODT Dateien dran
Allerdings wird die Tabelle noch immer so gefüllt wie in der ursprünglichen Version, also alles in Spalte A.
Ebenfalls spannend: Jetzt kriege ich 1890 Zeilen (statt zuvor 1926). D.h. dieses mal sind wir näher an den 1887 (es sind effektiv 1887, nicht 1888 wie zuvor von mir behauptet) ODT Dateien dran

Re: Bestimmte Daten aus sehr vielen ODT-Dateien auslesen
Hallo,
da war denn doch mehr im Argen ...
Eventuell muss beim Zerlegen des Strings anstelle von chr(10) mit chr(13) gearbeitet werden.
da war denn doch mehr im Argen ...

Code: Alles auswählen
sub test
'das Verzeichnis in dem die Dateien liegen
sVerzeichnis="Pfad zu deinem Verzeichnis"
'Zugriff auf den Ordner und Auslesen aller Dateinamen
oSimpleFileAccess = createUnoService( "com.sun.star.ucb.SimpleFileAccess" )
aDateien = oSimpleFileAccess.getFolderContents(ConvertToUrl(sVerzeichnis),false )
Dim arg(0) as new com.sun.star.beans.PropertyValue
arg(0).Name = "Hidden"
arg(0).Value = true
n=ubound(aDateien)
Dim adressen(n)
'Durchlauf durch alle Dateien
for i=0 to n
adresse=""
if right(aDateien(i),4)=".odt" then
'Datei im Hintergrund öffnen
odoc=StarDesktop.LoadComponentFromURL(adateien(i), "_blank",0,arg())
oForms=odoc.Drawpage
'Durchlauf durch alle graf. Elemente, Form1 auslesen
for k=0 to oForms.count-1
if oforms.getbyindex(k).name="Form1" then
adresse=oforms(k).String
end if
next
'Datei schließen
odoc.close(false)
end if
'Zerlegen des String in die einzelnen Absätze, max. 5
atmp=split(adresse,chr(10),5)
anz=ubound(atmp)
'ggf. auf 5 Teile erhöhen
redim preserve atmp(4)
for l=anz+1 to 4
atmp(l)=""
next
adressen(i)=atmp
next
'Texte in Spalte A schreiben
Thiscomponent.Sheets(0).getcellrangebyposition(0,0,4,n).setDataArray(adressen)
end sub
Gruß,
mikele
mikele
Re: Bestimmte Daten aus sehr vielen ODT-Dateien auslesen
Wow, du bist ein Held
Ich muss mir das Resultat noch im Detail anschauen, aber auf den ersten Blick sieht es hervorragend aus.
D.h. keine Fehlermeldung mehr und jede Zeile aus dem Textfeld kommt in eine eigene Spalte in der Tabelle.

Ich muss mir das Resultat noch im Detail anschauen, aber auf den ersten Blick sieht es hervorragend aus.
D.h. keine Fehlermeldung mehr und jede Zeile aus dem Textfeld kommt in eine eigene Spalte in der Tabelle.
An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:
Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.