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

Werte aus Dateien auslesen - Makrofehler

Werte aus Dateien auslesen - Makrofehler
Ron
Hallo,
ich hatte mir vor zwei Wochen einige Anregungen zu folgendem Thema gesucht:
Ich habe eine Zieldatei, in der ich im Blatt Werte in Spalte B den auszulesenden Tabellennamen und in Spalte C die auszulesende Zelle definiere. Ziel ist es einige hundert Dateien, die im Ordner (ist in der Zieldatei/Ordner Werte B3 gesetzt) ausgelesen werden und dann in den Ordner der Zieldatei "gelesen" ab der Zeile 3 eingefügt werden. Vielen Dank erst mal an Robert und JoWe für Ihre Hinweise und Empfehlungen...
Darauf habe ich mir folgendes Makro gebastelt:

Sub test()
Dim Datei As String, Pfad As String
Dim objDatei As Workbook
Dim QUTB, QUCell, myValue, myWB As String
Dim QZ, ZZ, ZS As Integer
'     Application.ScreenUpdating = False
ChDir Sheets("Werte").Range("b3")
Pfad = Sheets("Werte").Range("b3")
Datei = Dir$(Pfad & "\*.xls")
myWB = ThisWorkbook.Name
QZ = 8 'erste Zeile der Quelldaten für Ordner Werte bestimmen
ZZ = 3 'erste Zielzeile bestimmen
ZS = 1 'erste Zielspalte bestimmen
Do While Datei  ""
Set objDatei = Workbooks.Open(Datei, , True)
QUTB = Workbooks(myWB).Sheets("Werte").Cells(QZ, 2).Value
QUCell = Workbooks(myWB).Sheets("Werte").Cells(QZ, 3).Value
Do While QUTB  ""
myValue = objDatei.Sheets(QUTB).Range(QUCell).Value
Workbooks(myWB).Sheets("gelesen").Cells(ZZ, ZS) = myValue
QZ = QZ + 1 'Zähler Quelldaten auf nächster Zeile setzen
ZS = ZS + 1 'Zähler Zielspalte auf nächste Spalte setzen
Loop
objDatei.Close False
Datei = Dir$()
ZZ = ZZ + 1 'Zähler der Zielzeile auf nächste Zeile setzen
Loop
'     Application.ScreenUpdating = True
End Sub

Jetzt wird mir in der Zeile:
Workbooks(myWB).Sheets("gelesen").Cells(ZZ, ZS) = myValue
ein LZF 1004 - Anwendungs- oder objektdefinierter Fehler ausgeworfen.
Ich habe leider nicht soviel VBA Erfahrung, dass ich das Problem jetzt alleine lösen kann. Könnt Ihr sehen, was da klemmt?
Ich danke Euch schon einmal für Eure Mühe.
Danke
Ron
AW: Werte aus Dateien auslesen - Makrofehler
07.10.2009 20:43:18
Uduuh
Hallo,
ist ZS evtl. größer als 256?
Außerdem:
Workbooks(myWB) ist Unsinn. Ersetze durch Thisworkbook
ChDir Sheets("Werte").Range("b3") ist überflüssig, da in Datei=Dir$ .... der Pfad angegeben wird
Gruß aus’m Pott
Udo

AW: Werte aus Dateien auslesen - Makrofehler
07.10.2009 23:11:22
Ron
Hallo Udo,
vielen Dank erst einmal für Deine Meldung.
ZS habe ich doch auf 1 gesetzt?! Hiermit wollte ich eigentlich nur die Spalte A im Ordner "gelesen" ansprechen und dann mit jedem gelesenen Wert eine Spalte nach rechts gehen. In der Theorie kann ZS nicht größer werden als die im "Werte" Ordner definierten Adressen zum Auslesen (max. 40). Oder interpretiere ich VBA da falsch?
Auch der Tausch von Workbooks(myWB) in Thisworkbook bringt nichts. Der Fehler bleibt gleich.
Hast Du noch ne Idee?
Grüße aus Mecklenburg
Ron
Anzeige
@Udo: Kannst du mir mal erklären, warum...
08.10.2009 01:38:23
Luc:-?
...hier beständig die Unsitte der Verwendung von ThisWorkbook (leider im Bsp auch von dir) verbreitet wird? Einem VBAnfänger prägt sich das ein und wenn er dann irgendwann mal seine PgmCodes zentralisieren oder ein AddIn erstellen will, erlebt er sein blaues Wunder. ThisWorkbook sollte deshalb nicht die Regel, sondern die Ausnahme sein! Stattdessen wäre es doch viel sinnvoller, das Workbook-Objekt entweder direkt mit Namen (natürlich nicht so unnötig wie im Ron-Bsp!) oder als ActiveWorkbook anzusprechen, meinst du nicht auch...?!
Gruß Luc :-?
AW: Werte aus Dateien auslesen - Makrofehler
08.10.2009 10:16:53
Ron
Hallo Udo,
vielen Dank erst einmal für Deine Meldung.
ZS habe ich doch auf 1 gesetzt?! Hiermit wollte ich eigentlich nur die Spalte A im Ordner "gelesen" ansprechen und dann mit jedem gelesenen Wert eine Spalte nach rechts gehen. In der Theorie kann ZS nicht größer werden als die im "Werte" Ordner definierten Adressen zum Auslesen (max. 40). Oder interpretiere ich VBA da falsch?
Auch der Tausch von Workbooks(myWB) in Thisworkbook bringt nichts. Der Fehler bleibt gleich.
Hast Du noch ne Idee?
Grüße aus Mecklenburg
Ron
Anzeige
AW: Werte aus Dateien auslesen - Makrofehler
10.10.2009 18:42:29
eli
Hallo Ron,
ich weis nicht ob ich Dir helfen kann.
Aber versuchs mal so:

Workbooks(myWB).Sheets("gelesen").Cells(ZZ, ZS).Value = myValue
Gruß eli
ich glaub ich habs jetzt...
11.10.2009 20:19:29
Ron
Hallo zusammen,
vielen Dank für Eure Hinweise (Eli, danke für Deine gestrige Meldung - habe es leider zu spät gesehen...)
Das Problem war, dass die aufgebaute do while Schlife nicht wirklich sauber beendet wurde, wenn kein Wert mehr in Spalte A vorhanden war. Habe jetzt noch mal das Excel Kompendium von Held gewälzt und mir folgende Lösung einfallen lassen...
Sub Zusammenführen_mehrerer_Werte_aus_gleich_aufgebauten_Quelldateien()
Dim Datei As String, Pfad As String
Dim objDatei As Workbook
Dim QUTB, QUCell, myValue, myWB As String
Dim QZ, ZZ, ZS As Integer
Application.ScreenUpdating = False
'löscht alle Daten ab Zeile 2 im Ordner "Gelesen"
Sheets("gelesen").Activate
Range("A2:AN" & ActiveSheet.UsedRange.Rows.Count).Clear
ChDir Sheets("Werte").Range("b3")
Pfad = Sheets("Werte").Range("b3")
Datei = Dir$(Pfad & "\*.xls")
myWB = ThisWorkbook.Name
QZ = 8 'erste Zeile der Quelldaten für Ordner Werte bestimmen
ZZ = 2 'erste Zielzeile bestimmen
ZS = 1 'erste Zielspalte bestimmen
Do While Datei  ""
Set objDatei = Workbooks.Open(Datei, , True)
Do Until IsEmpty(Workbooks(myWB).Sheets("Werte").Cells(QZ, 1).Value)
If Workbooks(myWB).Sheets("Werte").Cells(QZ, 1).Value  "" Then
QUTB = Workbooks(myWB).Sheets("Werte").Cells(QZ, 2).Value
QUCell = Workbooks(myWB).Sheets("Werte").Cells(QZ, 3).Value
myValue = objDatei.Sheets(QUTB).Range(QUCell).Value
Workbooks(myWB).Sheets("gelesen").Cells(ZZ, ZS) = myValue
QZ = QZ + 1 'Zähler Quelldaten auf nächster Zeile setzen
ZS = ZS + 1 'Zähler Zielspalte auf nächste Spalte setzen
Else
End If
Loop
objDatei.Close False
Datei = Dir$()
ZZ = ZZ + 1 'Zähler der Zielzeile auf nächste Zeile setzen
QZ = 8 'Zähler der Quelldaten wieder zurücksetzen
ZS = 1 'Zähler der Zielspalte wieder zurücksetzen
Loop
Application.ScreenUpdating = True
End Sub
So klappt es zumindest... Nur noch das Problem, wenn ich Excel öffne und das Makro starte kommt es vor, dass er den Pfad nicht "findet". Muß dann erst eine Datei per Hand öffnen - dann funkt es problemlos. Hat da noch jemand ne Idee?
Grüße
Ron
Anzeige
Variablen richtig deklarieren!
12.10.2009 19:15:38
F1
Dazu bist du aber mit Werken von Held schlecht beraten.
F1

342 Forumthreads zu ähnlichen Themen


Hallo Profis,
ich suche einen VBA-Befehl für folgendes:
Ich habe einen Ordner mit vielen xls-Dateien. Diese sollen nun alle in einer Datei zusammengefahren werden, alle Zeilen, wenn der Wert der 2. Spalte links mit "12345" anfängt.
Geht dies?
Vielen Dank vorab.
Daniel
...
Anzeige

Hallo,
bräuchte eure Hilfe bitte.
Aus einem Tabellenblatt ("FEHLZEITEN") sollen Daten ausgelesen und in einem anderen Tabellenblatt ("EINSATZPLANUNG") ab Zeile 100 eingefügt und bei Änderungen in "FEHLZEITEN" aktualisiert werden.
Habe da mal eine Beispieldatei zur besseren Veransch...

Hallo Leute,
ich möchte mit VBA aus dem Blatt2 ganze Datenzeilen auslesen, wenn diese in der Spalte3 den Wert enthalten, den ich in Blatt3 in Zelle F6 vorgebe. Die Datenzeilen sollen dann in Blatt3 ab Zeile14 eingefügt werden.
Nach etlichen Selbstversuchen gebe ich jetzt auf.
Gruss...
Anzeige

Hallo,
wie kann ich aus einer Matrix, die in einer separaten Arbeitsmappe (im Beispiel der Bereich Arbeitsmappe "B") liegt, den entsprechenden EUR Betrag auslesen, wenn in der Spalte "C" untereinander in den einzelnen Zeilen die Bemessungsgrösse 1 steht (in diesem Fall qm) und in den Spalt...

Hallo liebe Excel-Könner,
ich habe folgendes Problem und finde keine Lösung.
Ich habe in Spalte A von 2006 bis heute Datum stehen, über eine UserForm möche ich in zwei TextBoxen von bis Datum eintragen und in Spalte B in diesem Bereich den WertX.
Ich hoffe Ihr könnt mir helfen!
...

Hallo Excel-Freunde,
ich glaub ich werde verrückt.
Meine ComboBox füllt sich nicht mehr. Ich versuche den Code so zu ändern, dass die Quelle für die ComboBox wo anders stehen kann. Im folgenden Code müssen die Werte in der Spalte A der Tabelle1 stehen.
Private Sub Worksheet_Change...
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige