Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
616to620
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
616to620
616to620
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Excel-Dateien auslesen (VBA)

Excel-Dateien auslesen (VBA)
29.05.2005 21:30:19
Gaidin
Hallo,
ich habe folgendes Problem:
Aus verschiedenen, gleich aufgebauten, Exceldateien, die in verschiedenen Unterordnern liegen, möchte ich Daten in eine neue Excel-Datei importieren und die importierten Daten dort untereinander schreiben lassen. Die Einträge in den Original-Tabellen haben immer 5 Spalten, jedoch unterschiedlich viele Fälle (Zeilen).
Hat jemand eine Idee wie ich das am Besten anstelle?
Danke schon einmal im Voraus für die Hilfe.
Gaidin

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel-Dateien auslesen (VBA)
29.05.2005 21:52:08
Ralf
Hi Gaidin,
Erstelle eine Schleife für die Anzahl der zu öffnenden Dateien. Lege Dir ein paar Variablen für die verschiedenen Dateien an. Die läßt Du dann mit den Pfadangaben füllen. Bsp.:
Pfad = Application.GetOpenFilename("Ecxeldateien (*.xls), *.xls", 1, "Datei wählen", "Öffnen", False)
oder trage die Pfade per Hand ein.
dann wechsle in das betreffende Arbeitsblatt. Mit einer For Each Schleife läßt Du die Bereiche einlesen. Die Zeilenanzahl kannst Du notfalls über eine vorgelagerte Schleife ermitteln lassen. Bsp.:
If activecell = "" then ...
Du kannst danach ein Array mit den Werten füllen. Wechsle dann in Deine neue Datei, in das richtige Arbeitsblatt und lies, wieder über eine Schleife, das Array aus und schreibe die Daten in die neue Tabelle. Ermittle´die letzte Zelladresse und beginne beim nächsten Vorgang dort mit dem Schreiben. Vorgang sooft wiederholen lassen, bis alle alten Dateien ausgelesen wurden.
Da ich bei Dir lese VBA gut, dürfte das für Dich weiter kein Problem sein.
Ciao, Ralf
Anzeige
AW: Excel-Dateien auslesen (VBA)
29.05.2005 22:10:15
Holger
Hi,
deine Antwort könnte glatt aus einem Buch von Bernd Held sein und das ist kein Lob.
mfg Holger
AW: Excel-Dateien auslesen (VBA)
30.05.2005 10:34:07
Gaidin
Hmm,
mein Problem liegt wo anders. Ich habe das Auslesen mit Application.Filesearch gelöst. Was mir eigentlich fehlt ist, dass der auzulesende Range dynamisch ermittelt wird. Ich habe da bisher ohne richtige Lösung dran rumgefuhrwerkt: Hier der Code:
******************************************************

Sub Daten_lesen()
Dim basebook As Workbook
Dim mybook As Workbook
Dim sourceRange As Range
Dim destrange As Range
Dim rnum As Long
Dim i As Long
Dim a As Long
Dim strend As String
Application.ScreenUpdating = False
With Application.FileSearch
.NewSearch
.LookIn = "D:\Daten\"
.SearchSubFolders = True
.FileType = msoFileTypeExcelWorkbooks
If .Execute() > 0 Then
Set basebook = ThisWorkbook
rnum = 1
For i = 1 To .FoundFiles.Count
Set mybook = Workbooks.Open(.FoundFiles(i))
strend = Cells.Find(What:="*", After:=[A1], SearchDirection:=xlPrevious).Offset(0, 1)
Set sourceRange = mybook.Worksheets(1).Range("A2").End(strend)
With sourceRange
Set destrange = basebook.Worksheets(1).Cells(rnum, 1). _
Resize(.Rows.Count, .Columns.Count)
End With
destrange.Value = sourceRange.Value
mybook.Close
rnum = rnum + a
Next i
End If
End With
Application.ScreenUpdating = True
End Sub

*******************************************************
Das Problem liegt in diesem Bereich:
strend = Cells.Find(What:="*", After:=[A1], SearchDirection:=xlPrevious).Offset(0, 1)
Set sourceRange = mybook.Worksheets(1).Range("A2").End(strend)
Ich finde einfach nicht die letzte Zelle des Ranges.
Weisst du da weiter?
Gaidin
Anzeige
AW: Excel-Dateien auslesen (VBA)
30.05.2005 10:50:13
Ralf
Hi Gaidin,
erste Leerzelle in Spalte A aktivieren:
Dim strend
Range("A1").Select
Selection.SpecialCells(xlCellTypeLastCell).Select
strend = ActiveCell.Offset(1, 0).Address
Range(strend).Activate
Das sollte funktionieren.
Ciao, Ralf
AW: Excel-Dateien auslesen (VBA)
30.05.2005 12:31:24
Holger
Hi,
vielleicht ist dir schon mal augfgefallen, dass Jeder, der sich halbwegs mit Makros auskennt, select und activate verwmeidet? Du gibts hier genau die Tipps, die schlecht sind, aber vom Anfänger nicht durchschaut werden können, blamagel.
mfg Holger
AW: Excel-Dateien auslesen (VBA)
30.05.2005 12:20:12
Holger
Hl,
strend muss als Range deklariert sein.
Set strend = Cells.Find(What:="*", After:=[A1], SearchDirection:=xlPrevious).Offset(0, 1)
If not strend is nothing then
......
End if
mfg Holger
Anzeige
Danke. Hab's, wie folgt gelöst.
30.05.2005 15:21:49
Gaidin
Hallo,
ich habe es mit folgendem Makro gelöst:
***************************************

Sub Daten_lesen()
Dim basebook As Workbook
Dim mybook As Workbook
Dim sourceRange As Range
Dim destrange As Range
Dim rnum As Long
Dim i As Long
Dim a As Long
Dim rngend As String
Application.ScreenUpdating = False
With Application.FileSearch
.NewSearch
.LookIn = "D:\Daten\"
.SearchSubFolders = True
.FileType = msoFileTypeExcelWorkbooks
If .Execute() > 0 Then
Set basebook = ThisWorkbook
rnum = 1
For i = 1 To .FoundFiles.Count
Application.DisplayAlerts = False
Set mybook = Workbooks.Open(.FoundFiles(i))
rngend = Range("m65536").End(xlUp).Address
Set sourceRange = mybook.Worksheets(1).Range("A2", rngend)
a = sourceRange.Rows.Count
With sourceRange
Set destrange = basebook.Worksheets(1).Cells(rnum, 1). _
Resize(.Rows.Count, .Columns.Count)
End With
destrange.Value = sourceRange.Value
mybook.Close
rnum = rnum + a
Next i
End If
End With
Application.ScreenUpdating = True
End Sub

*******************************************************
Danke an alle Helfer.
Gaidin
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige