🍀 Das LibreOffice Forum braucht HEUTE Ihre Hilfe! 🍀
❤️ Spenden Sie jetzt und sichern Sie die Zukunft unseres LibreOffice-Forums ❤️
Ihre Spende hilft, die Community offen, werbefrei (bei Registrierung) und lebendig zu halten. Vielen lieben Dank!
>> Das LibreOffice-Forum lebt von Ihnen – und von vielen Experten, die freiwillig und kostenlos ihr Wissen teilen.<<
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)=atmpGruß,
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:
Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das laufende.
Einfach per Kreditkarte oder PayPal. Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.
❤️ Vielen lieben Dank für Ihre Unterstützung ❤️