Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1308to1312
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Daten auslesen .. Verzeichnis

Daten auslesen .. Verzeichnis
02.05.2013 14:28:18
Mike

Hallo zusammen,
in einem Verzeichnis stehen Dutzende gleiche Dokumente von denen ich jeweils 56 Felder (B1, D2, F1, H1 ...) automatisch auslesen möchte.
Pro Dokument soll es später eine Datenzeile mit den 56 Feldern geben. Wie würde hierfür eine VBA-Lösung aussehen?
Danke für Eure Hilfe.
Gruss
Mike

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten auslesen .. Verzeichnis
02.05.2013 15:25:09
Oberschlumpf
Hi Mike
Das sollte so funktionieren (ungetestet):
Sub sbZeile56()
Dim lstrFile As String, liRow As Integer
lstrFile = Dir("DeinPfad\*.xls") 'Pfad + Endung anpassen, da du es hier nicht angegeben  _
hast
If lstrFile = "" Then Exit Sub
liRow = 1
Do Until lstrFile = ""
Workbooks.Open "DeinPfad\" & lstrFile
With ThisWorkBook(1) '1 anpassen, wenn neue Daten nicht in Tabelle1 sollen
'DeineTabelle = den Tabellennamen, aus der die Werte kommen
.Cells(liRow, 1).Value = Sheets("DeineTabelle").Range("B1").Value
.Cells(liRow, 2).Value = Sheets("DeineTabelle").Range("D2").Value
.Cells(liRow, 3).Value = Sheets("DeineTabelle").Range("F1").Value
.Cells(liRow, 4).Value = Sheets("DeineTabelle").Range("H1").Value
'...usw bis...
'für DeineZelle56 = die letzte Zelle, die du übertragen willst
.Cells(liRow, 56).Value = Sheets("DeineTabelle").Range("DeineZelle56"). _
Value
End With
lstrFile = Dir
liRow = liRow + 1
Loop
End Sub
Hilfts?
Schöner wärs gewesen, wenn du eine Bsp-Datei mit allen 56 Zellen gezeigt hättest, die du haben willst.
Ach ja, und all die Infos, die hier auch noc fehlen - zu erkennen an meinen Kommentaren im Code, wo du anpassen musst.
Ciao
Thorsten

Anzeige
AW: Daten auslesen .. Verzeichnis
02.05.2013 16:48:25
Mike
Hallo Thorsten,
wow, besten Dank für die schnelle Hilfe. Aktuell kommt noch dieser Fehler: Run-time error '438' und er stoppt bei "with ThisWorkbook(1)".
Eigentlich ist es immer das erste Blatt, das "RaSa" heisst. Muss ich da was anpassen?
In der ersten Zeile der Ziel-Datei habe ich die Feldnamen hinterlegt, sodass wohl mit "liRow = 2" gestartet werden muss.
Danke für die ergänzende Hilfe.
Gruss
Mike

AW: Daten auslesen .. Verzeichnis
02.05.2013 19:25:00
Oberschlumpf
Hi Mike
Wenn in Zeile 1 = Überschriften oder Feldnamen, dann ist liRow = 2 richtig.
Was aber den Fehler betrifft, den du beschreibst, kann ich dir leider nicht helfen, weil ich deine Bsp-Datei noch nicht kenne, die alle notwendigen Bsp-Daten und sonstige Infos enthalten muss, damit ich den Fehler nachvollziehen kann.
Also, Bsp-Datei inkl Code, inkl Bsp-Daten, inkl. sonstiges, was wichtig ist.
Das mit den Feldnamen wusste ich ja auch nicht - und wer weiß - was da noch für Geheimnisse lauern.
Ciao
Thorsten

Anzeige
Bsp .. Daten auslesen
03.05.2013 12:42:07
Mike
Hallo Thorsten,
danke für Deine Infos. In der Beilage findest Du die Uebersichtsliste (RaSa-Liste - 85171.xlsm) sowie zwei Detailsheets (85172. / 85173.) zum integrieren. Aktuell werden "nur" 14 Felder integriert, um zu sehen, obs überhaupt funktioniert.
https://www.herber.de/bbs/user/85171.xlsm
https://www.herber.de/bbs/user/85172.xlsx
https://www.herber.de/bbs/user/85173.xlsx
Das Vorgehen sieht dann so aus:
1) RaSa-Liste öffnen
2) Makro ausführen -> jedes einzelne Detailsheet nacheinander öffnen (RaSaTa1, RaSaTa2 ...)
3) und die Werte in RaSa-Liste übernehmen
Liste und Detailsheet liegen im gleichen Verzeichnis.
Danke für Deine Anpassungen / Hilfe.
Gruss
Mike

Anzeige
Bsp .. Daten auslesen
03.05.2013 13:23:31
Mike
Hallo Thorsten,
danke für Deine Infos. In der Beilage findest Du die Uebersichtsliste (RaSa-Liste - 85171.xlsm) sowie zwei Detailsheets (85172. / 85173.) zum integrieren. Aktuell werden "nur" 14 Felder integriert, um zu sehen, obs überhaupt funktioniert.
https://www.herber.de/bbs/user/85171.xlsm
https://www.herber.de/bbs/user/85172.xlsx
https://www.herber.de/bbs/user/85173.xlsx
Das Vorgehen sieht dann so aus:
1) RaSa-Liste öffnen
2) Makro ausführen -> jedes einzelne Detailsheet nacheinander öffnen (RaSaTa1, RaSaTa2 ...)
3) und die Werte in RaSa-Liste übernehmen
Liste und Detailsheet liegen im gleichen Verzeichnis.
Danke für Deine Anpassungen / Hilfe.
Gruss
Mike

Anzeige
noch offen .. danke .. Gruss / owT
03.05.2013 14:27:09
Mike
.

AW: Bsp .. Daten auslesen
04.05.2013 08:02:19
Oberschlumpf
Hi Mike
Sorry, das es etwas dauerte - aber ich hab ja auch noch n anderes Leben, außer Excel :-)
Hier nun meine Änderung:
https://www.herber.de/bbs/user/85179.zip
Wie du erkennen kannst, handelt es sich erst mal um ein ZIP-Archiv.
Wichtig!
Du musst das Archiv zuerst entpacken, bevor es losgeht.
Also nicht einfach doppelt auf die ZIP-Datei klicken und dann die Datei Uebersicht starten, sondern erst entpacken.
Danach existiert dann ein neues Unterverzeichnis mit 3 Dateien.
Wie die Dateien heißen, ist egal, da nach Start alle xls-Dateien gesucht + verarbeitet werden.
Mein Code schließt aber die Datei "Uebersicht" von der Verarbeitung aus, da diese Datei ja den Code enthält.
So, nun zu der Übersicht.
Ich hab nur den Code so weit angepasst, dass er auch funktioniert.
Wenn du also nach Entpacken des Archivs die Datei "uebersicht.xlsm" startest und nach Aktivierung der Makros das Makro "RadsatzDaten_importieren" gestartet hast, werden nacheinander alle xls*-Dateien geöffnet, und die entsprechenden Werte in die Uebersichtsdatei übertragen. Nach jedem Vorgang wird die gerade geöffnete Datei wieder geschlossen, und die nächste Datei wird geöffnet.
Achte darauf, dass du im Code vor dem Start erst mal wieder den Pfad anpassen musst, in dem die Dateien gespeichert sind.
So, und wenn nun auch bei dir zumindest erst mal die 2 Testdateien korrekt eingelesen wurden, kannst du ja die Codezeilen erweitern, damit auch alle noch fehlenden Werte übertragen werden.
Bin neugierig auf dein Feedback, ob nun alles läuft.
Ciao
Thorsten

Anzeige
wow wow .. Daten auslesen
06.05.2013 10:24:37
Mike
Hallo Thorsten,
wow wow wow, ich bin begeistert!! Das ist eine geniale Lösung, besten Dank.
Ich hoffe lediglich, dass sie dann beim Verarbeiten von Dutzenden von Tabellen
nicht irgend ein "Memory"-Overflow haben wird, da die Werte ja erst am Schluss
publiziert / eingefügt werden.
Besten Dank für die geniale Erarbeitung,
Gruss
Mike

Perfekt .. Daten auslesen
06.05.2013 14:26:46
Mike
Hallo Thorsten,
nicht nur zwei Blätter sondern auch ein Lauf mit 500 Dateien hat
die Uebersicht ohne Probleme verarbeitet. SUPER!
Besten Dank nochmals für Deine Unterstützung,
Gruss
Mike

Anzeige
danke fürs feedback, freut mich..owT
06.05.2013 14:50:25
Oberschlumpf

noch offen...owT
02.05.2013 19:25:40
Oberschlumpf

AW: Daten auslesen .. Verzeichnis
02.05.2013 15:27:06
Rudi
Hallo,
etwa so:
Sub xxxx()
Dim sFile As String, arr(1 To 1, 1 To 56)
Dim wkb As Workbook
Const sPath As String = "c:\test\"
sFile = Dir(sPath & "*.xls*")
Do While sFile  ""
Set wkb = Workbooks.Open(sPath & sFile)
With wkb
With .Sheets(1)
arr(1, 1) = .Range("B1")
arr(1, 2) = .Range("D2")
arr(1, 3) = .Range("F1")
arr(1, 4) = .Range("H1")
'etc
End With
.Close False
End With
Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(, 56) = arr
Loop
End Sub

Gruß
Rudi

Korrektur
02.05.2013 15:30:56
Rudi
Hallo,
da fehlt was.

sFile =Dir
Loop
End Sub

Anzeige
immer wieder ..
02.05.2013 17:03:14
Mike
Hallo Rudi,
danke für Deine Version. Aktuell macht er noch keinen Dokument-Wechsel sondern
öffnet immer wieder das gleiche und holt sich die (aktuell) vier Demowerte.
Danke für die Bereinigung.
Gruss
Mike

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige