Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makro um Daten aus externen Dateien einzulesen

Makro um Daten aus externen Dateien einzulesen
08.01.2015 18:16:25
Tim
Hallo zusammen,
dies ist mein erster Beitrag, und ich hoffe sehr, dass Ihr mir helfen könnt, da ich in Sachen VBA noch komplett unbeschlagen bin.
Ich möchte aus sehr vielen (über 100) Monatsdateien Umsatzdaten auslesen und in einer Hauptdatei zusammenstellen. Ohne Makros ist mir dies aber nur möglich, wenn die Monatsdateien geöffnet sind. Ausserdem ist meine Lösung sehr rechenintensiv und führt zu Aufhängern...
Eine Beispielmonatsdatei ist hier zu finden: https://www.herber.de/bbs/user/94849.xlsx
Diese Datei hat in meinem Beispiel den Namen "2009_10.xlsx" (für September 2009).
In der Hauptdatei möchte ich nun über eine INDEX-VERGLEICH Verknüpfung die relevaten Daten finden. Ihr könnt das in dieser Datei sehen: https://www.herber.de/bbs/user/94848.xlsx
Ich habe das auch über die INDEX-VERGLEICH Verknüpfung hinbekommen, unter Zuhilfenahme von VERKETTEN und INDIREKT. Diese Lösung ist jedoch leider nicht praktibale - aufgrund der Rechenintensität und der Notwendigkeit, die Monatsdateien geöffnet zu haben (um das gefürchtetet "#BEZUG" zu vermeiden).
Ich wäre auch extrem dankbar, wenn Ihr mir helfen könntet mit einem Makro, das die benötigten Formeln in die Zellen schreibt und somit auf geschlossene Dateien direkt zugreift.
Mit bestem Dank!
Tim

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro um Daten aus externen Dateien einzulesen
08.01.2015 21:18:04
Dieter
Hallo Tim,
du kannst das mit dem folgenden Programm amchen
Sub DatenÜbernehmen()
Dim blatt As String
Dim datei As String
Dim fso As FileSystemObject
Dim letzteSpalte As Long
Dim pfad As String
Dim spalte As Long
Dim wbH As Workbook  ' Hauptdatei
Dim wbM As Workbook  ' Monatsdatei
Dim wsH As Worksheet ' Hauptdatei
Dim wsM As Worksheet ' Monatsdatei
Set fso = New FileSystemObject
Set wbH = ThisWorkbook
Set wsH = wbH.Worksheets("Umsatz")
pfad = wsH.Range("B1")
If Not fso.FolderExists(FolderSpec:=pfad) Then
MsgBox pfad & " existiert nicht"
Exit Sub
End If
letzteSpalte = wsH.Cells(7, wsH.Columns.Count).End(xlToLeft).Column
If letzteSpalte 
Die Mappe mit dem Programm findest du hier:
https://www.herber.de/bbs/user/94856.xlsm
VieleGrüße
Dieter

Anzeige
AW: Makro um Daten aus externen Dateien einzulesen
09.01.2015 08:29:15
Tim
Hallo Dieter,
Vielen Dank für Deine schnelle Antwort. Das Makro ist schon sehr gut, aber ich habe noch zwei Fragen:
1. a. In den Monatsdateien, welche ich verwende, sind zum Teil leere Zeilen zwischen den Ländern. Das ist auch der Grund, warum ich das mit der INDEX-VERGLEICH Verknüpfung gemacht hatte. Ich habe noch eine andere Monatsdatei (2009_11) hochgeladen, wo das veranschaulicht wird im Vergleich zur 2009_10 Monatsdatei. -- Ist es möglich, über das Makro in der Monatsdatei nach dem entsprechenden Land suchen zu lassen, und dieses dann zu verwenden?
1. b. Das gleiche ist der Fall bei den Spalten. Ab und an ist eine extra Spalte drin, so dass der Umsatz nicht immer in Spalte E ist, sondern manchmal auch in Spalte F oder G (siehe Monatsdatei 2009_12). Wäre das auch möglich über eine Suche nach der Umsatz-Spalte?
2. Dein Makro schreibt die Zahlen als Values in die Hauptdatei. Wäre es auch möglich, in die Hauptdatei einen Link zur entsprechenden Zelle in der Monatsdatei zu schreiben?
Nochmals vielen Dank für Deine Hilfe, Dieter.
-Tim
Monatsdateien:
2009_10: https://www.herber.de/bbs/user/94849.xlsx
2009_11: https://www.herber.de/bbs/user/94869.xlsx
2009_12: https://www.herber.de/bbs/user/94870.xlsx

Anzeige
AW: Makro um Daten aus externen Dateien einzulesen
09.01.2015 14:20:22
Dieter
Hallo Tim,
das könnte dann so aussehen:
Sub DatenÜbernehmen()
Dim blatt As String
Dim datei As String
Dim fso As FileSystemObject
Dim land As String
Dim letzteSpalte As Long
Dim pfad As String
Dim spalteH As Long
Dim spalteM As Long
Dim suchErgebnis As Object
Dim wbH As Workbook  ' Hauptdatei
Dim wbM As Workbook  ' Monatsdatei
Dim wsH As Worksheet ' Hauptdatei
Dim wsM As Worksheet ' Monatsdatei
Dim zeileH As Long
Dim zeileM As Long
Set fso = New FileSystemObject
Set wbH = ThisWorkbook
Set wsH = wbH.Worksheets("Umsatz")
pfad = wsH.Range("B1")
If Not fso.FolderExists(FolderSpec:=pfad) Then
MsgBox pfad & " existiert nicht"
Exit Sub
End If
letzteSpalte = wsH.Cells(7, wsH.Columns.Count).End(xlToLeft).Column
If letzteSpalte 
Die neue Version findest du hier:
https://www.herber.de/bbs/user/94886.xlsm
Bei deinen Beispieldateien musst du noch die Blattnamen anpassen.
Viele Grüße
Dieter

Anzeige
AW: Makro um Daten aus externen Dateien einzulesen
09.01.2015 16:18:47
Tim
Super, Dieter!
Vielen Dank. Ich probiere das übers Wochenende aus.
Ich bin sehr beeindruckt von Deinem Können und Deiner Hilfsbereitschaft.
Nochmals danke, und ein schönes Wochenende wünsche ich Dir.
Tim

308 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige