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 (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Datenübernahme funzt nicht

Datenübernahme funzt nicht
Ron
Hallo,
jetzt bin ich in der Tat verzweifelt...
Ich hatte bereits gestern mal einen Eintrag im Forum gemacht - leider muß ich mich wohl zu umständlich ausgedrückt haben - zumindest danke an Robert für die Meldung, die mich allerdings nicht weitergebracht hat.
Habe jetzt mal versucht, eine Makrolösung zu erarbeiten (folgt unten).
Ziel bleibt folgender Sachverhalt:
Ich habe ein UV mit diversen Exceldateien - alle gleichen Aufbaus aber unterschiedlichen Daten. Damit ich von den bisher genutzen Verknüpfungen in meiner Zieldatei wegkomme, will ich mir die Daten aus den jeweiligen Dateien einlesen und in einem "zentralen" Tabellenblatt meiner Zusammenfassungsdatei ablegen.
Folgendes Makro soll den Ordner nach XLS Dateien durchsuchen, diese öffnen und dann den Wert in den Ordner "gelesen" in Spalte A zusammenfassen. Doch leider greift das Ding noch nicht mal die Dateien an (öffnet Sie also nicht). Letzendlich will ich diese Schleife dann für jede im Verzeichnis gefundene XLS Datei durchlaufen... Wie geht das, bzw. wo ist das Ding hier falsch?
Sub Dateien_in_eine_Tabelle_zusammenfuehren2()
Dim Datei As String, Pfad As String
Dim objDatei As Workbook
Sheets("Werte").Select
ChDir Range("b3")
Pfad = Range("b3")
Datei = Dir$(Pfad & "*.xls")
'Application.ScreenUpdating = False
Do While Datei  ""
'Öffnet eine Datei
Set objDatei = Workbooks.Open(Datei, , True)
'Wert holen
With objDatei.Sheets("Tabelle1")
Range("g4").Select
Selection.Copy
Windows("tool.xls").Activate
Sheets("gelesen").Select
Cells(Range("A1").End(xlDown).Row + 1, 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End With
'Schliesst die geöffnete Datei
objDatei.Close False
'Prüft für die nächste Datei
Datei = Dir$()
Loop
Application.ScreenUpdating = True
End Sub
In diesem Fall sollte er das Feld G4 aus Tabelle1 in die Spalte A des Blatts "gelesen" übertragen. Macht er halt nicht. Könnt Ihr mir bitte einen Tipp geben und meine Makrounkenntnis verzeihen...?
Damit ich in der Schleife nicht jeden Wert zum Übertragen extra aufnehmen muß, abschließend noch folgende Frage: Geht es, dass ich im Blatt "Werte" meiner Datei Tool.xls in Spalte C und D die auszulesenden Tabellenblätter und Zellen aufführe und das Makro dies selbstständig mit übernimmt?
Hoffe auf Eure Unterstützung
Liebe Grüße
Ron
und hier noch mal die Datei: https://www.herber.de/bbs/user/64706.xls

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Datenübernahme funzt nicht
25.09.2009 15:35:31
Ron
für das Öffnen der Dateien habe ich gerade festgestellt, dass ich einen \ am Ende vergessen habe...
Im Ablauf gibt es folgendes Problem:
Cells(Range("A1").End(xlDown).Row + 1, 1).Select

gibt Fehler, wenn in A2 nichts steht ---> warum
sonst gerne Hinweise, wie ich die Schleife "erweitern" kann, damit ich aus dem Sheet "Werte" die Sprungmarken ziehen kann...
Danke
Ron
AW: Datenübernahme funzt nicht
25.09.2009 15:36:35
Ron
sorry - hatte ich den Thread eben geschlossen?!
AW: Datenübernahme funzt nicht
25.09.2009 21:06:58
JoWE
so vielleicht:
Option Explicit
Sub Dateien_in_eine_Tabelle_zusammenfuehren2()
Dim Datei As String, Pfad As String
Dim objDatei As Workbook
Dim myTB, myCell, myValue, myWB As String
Dim ze As Integer
ChDir Sheets("Werte").Range("b3")
Pfad = Sheets("Werte").Range("b3")
Datei = Dir$(Pfad & "\*.xls")
myWB = ThisWorkbook.Name
ze = 8
Do While Datei  ""
myTB = Sheets("Werte").Cells(ze, 3).Value
myCell = Sheets("Werte").Cells(ze, 4).Value
Set objDatei = Workbooks.Open(Datei, , True)
myValue = objDatei.Sheets(myTB).Range(myCell).Value
Workbooks(myWB).Sheets("gelesen").Cells(1, ze - 7) = myValue
objDatei.Close False
Datei = Dir$()
ze = ze + 1
Loop
Application.ScreenUpdating = True
End Sub

Anzeige
AW: Datenübernahme funzt nicht
26.09.2009 11:34:28
Ron
Hallo JoWE,
vielen, vielen Dank erst einmal dafür, dass Du Dich der Frage angenommen hast. Der Lösungsansatz kommt schon ziemlich nahe!!! Folgendes Problem habe ich noch. Sobald er die Schleife durchläuft trägt er die Daten in "gelesen" in der Zeile 1 ein. Muß ich dann hier was ändern?
Workbooks(myWB).Sheets("gelesen").Cells(1, ze - 7) = myValue

Größeres Problem - nach dem Öffnen der zweiten Datei wird mir ein Laufzeitfehler 9 - INDEX AU?ERHALB GÜLTIGEM BEREICH gegeben und Makro stoppt. Kannst Du mir sagen warum?
myValue = objDatei.Sheets(myTB).Range(myCell).Value

Grüße un danke für Deine Hilfe
Ron
Anzeige
AW: Datenübernahme funzt nicht
26.09.2009 14:23:45
Ron
Hallo JoWE,
habe Dein Makro jetzt mal in Einzelschritten laufen lassen. Das Unterverzeichnis wird sauber angefasst - die erste Datei eröffnet. Dann wird allerdings ledigleich der erste Wert übertragen (greift also C8 und D8 der Tooldatei sauber ab) und schliesst dann die erste Datei. Zweite Datei wird aufgemacht und zweiter Wert (C9 und D9) gelesen und rechts neben dem oben ausgelesenen positioniert. Da ich z.Zt. nur 3 Werte in die Tabelle zum Übertragen eingetragen hatte, wird nach öffnen (also Loop wird nicht beendet wenn er in CX keinen Eintrag mehr hat) der vierten Datei mit der vorhin aufgeführeten Fehlermeldung beendet. Muß ich da noch eine Do While Schleife reinbringen? (eine fürs lesen, eine für das Abgreifen der Dateien?)
Freue mich auf Deine RA.
Viele Grüße
Ron
Anzeige
AW: Datenübernahme funzt nicht
29.09.2009 22:09:48
JoWE
Ron,
1. Workbooks(myWB).Sheets("gelesen").Cells(ze - 7,1) = myValue 'jetzt senkrecht in Spalte A
2. Das Makro öffnet die xls-Files eines Ordners nacheinander und schaut für jede Datei in die Tabelle Werte der Hauptarbeitsmappe beginnend in Zeile 8. Dort liest es die zu auszuwertende Adresse für die gerade göffnete Datei (lt. Zeile 8 Spalte C´: Tabelle1; lt. Zeile 8 Spalte D D4) kopiert den in dieser Adresse gespeicherten Wert und schreibt ihn in die "gelesen"-Tabelle ein. Wenn in der Wertetabelle ein entsprechender Adresswert fehlt, kommt es zum Fehler.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige