Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1716to1720
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

Dateien auslesen

Dateien auslesen
23.10.2019 10:58:41
Jonas
Hi Leute,
habe mir ein VBA geschrieben das mir files in einem ordner findet und die dateinamen ausliest.
Nun hab ich weiter in VBA geschrieben, dass er alle diese files durchgehen soll und mir jede Zeile in der "e1_100" steht kopieren soll. Diese Zeilen werden dann in der Ausgabe einfach untereinander eingefügt.
Leider funktioniert das ganze noch nicht, ich glaube ich hab ein Range-problem. Meine Urpsrungsfiles haben 5 spalten, A-E.
Die neue grosse Excel hat ebenfalls 5 spalten zum einfügen von A-E.
Kann mir einer helfen was ich falsch mache? mit dem Code hier kopiert er mir immer nur die erste Zeile jedes files.. das heisst er scannt gar nicht nach e1_100.

Sub Import_Function()
Dim Input_WS As Workbook
Dim Output_WS As Workbook
Dim Location As String
Dim i As Long
'Workbook vorbereiten
Set Output_WS = ActiveWorkbook
ActiveSheet.Range("A2:E999999").Clear
'Input-Workbook kommt über Schleifen
For i = 2 To InputBox("Wieviele Input-Blätter gibt es?") + 1
Output_WS.Sheets(1).Activate
Location = Cells(i, "H").Value
Workbooks.Open Filename:=Location
Set Input_WS = ActiveWorkbook
'Datenimport Teil 1: Range auslesen
If i = 2 Then
Zielzeile = 2
Else:
Zielzeile = Output_WS.Sheets(1).Range("A1").End(xlDown).Row + 1
End If
'Filter einstellen
Input_WS.Sheets(1).Range("A1:E" & Input_WS.Sheets(1).Range("A1").End(xlDown).Row). _
AutoFilter
Input_WS.Sheets(1).Range("A1:E" & Input_WS.Sheets(1).Range("A1").End(xlDown).Row). _
AutoFilter Field:=2, Criteria1:="e1_100"
'Zeilen mit Werten berechnen
If Input_WS.Sheets(1).Range("A2").End(xlDown).Row > 9999 Then
Endzeile = 2
Else:
Endzeile = Input_WS.Sheets(1).Range("E2").End(xlDown).Row
End If
'Zellen kopieren
Input_WS.Sheets(1).Range("A2:E" & Endzeile).Copy
Output_WS.Sheets(1).Cells(Zielzeile, 1).PasteSpecial xlPasteValues
Application.DisplayAlerts = False
Input_WS.Close
Set Input_WS = Nothing
Next i
Application.DisplayAlerts = True
End Sub


Sub DateinamenAuflisten()
Dim Dateiname As String
Dim i As Long
Dateiname = Dir$(ActiveSheet.Range("K2").Value) 'Hier Verzeichnis und Datei angeben
Do While Dateiname ""
Range("G2").Activate
ActiveCell.Offset(i, 0) = Dateiname
i = i + 1
Dateiname = Dir$()
Loop
End Sub


Danke euch!!!

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

Betreff
Datum
Anwender
Anzeige
AW: Dateien auslesen
23.10.2019 13:24:38
MS
Hallo Jonas,
vielleicht irre ich, aber du definierst "Endzeile" innerhalb einer If-Abfrage, aber verwenden willst du es auch außerhalb derer.
Vielleicht "Endzeile" am Anfang des Subs definieren und dann an jeder Stelle, wo benötigt, benutzen?
Wenn ich das richtig verstehe, kann das Programm nicht auf diese Variable zugreifen und deswegen gibt es dir eine "Range"-Fehlermeldung aus.
AW: Dateien auslesen
23.10.2019 13:33:22
Nepumuk
Hallo Jonas,
teste mal:
Option Explicit

Public Sub Import_Function()
    
    Const FOLDER_PATH As String = "G:\Eigene Dateien\Eigene Tabellen\" 'Anpassen !!!
    
    Dim objWorkbook As Workbook
    Dim objWorksheet As Worksheet
    Dim strFilename As String
    Dim lngRow As Long
    
    Application.ScreenUpdating = False
    
    Set objWorksheet = ActiveSheet
    
    Call Range(Cells(2, 1), Cells(Rows.Count, 5)).ClearContents
    
    strFilename = Dir$(FOLDER_PATH & "*.xls*")
    
    Do Until strFilename = vbNullString
        
        lngRow = Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
        
        Set objWorkbook = Workbooks.Open(Filename:=FOLDER_PATH & strFilename)
        
        With objWorkbook.Worksheets(1)
            
            If .FilterMode Then Call .ShowAllData
            
            Call .Rows(1).AutoFilter(Field:=2, Criteria1:="e1_100")
            
            With .AutoFilter.Range
                Call Range(.Cells(2, 1), .Cells(.Rows.Count, 5)).Copy
            End With
        End With
        
        Call objWorksheet.Cells(lngRow, 1).PasteSpecial( _
            Paste:=xlPasteValuesAndNumberFormats)
        
        Call objWorkbook.Close(SaveChanges:=False)
        
        strFilename = Dir$
        
    Loop
    
    Set objWorkbook = Nothing
    Set objWorksheet = Nothing
    
    Application.ScreenUpdating = True
    
End Sub

Gruß
Nepumuk
Anzeige
AW: Dateien auslesen
23.10.2019 13:55:33
Jonas
Hi Nepumuk,
leider lädt mit dem code nichts wenn ich das makro ausführe.. Mit meinem Code kopiert er jeweils die erste zeile der dokumente und kopiert sie, kannst du mir erklären was ich falsch mache?
AW: Dateien auslesen
23.10.2019 14:02:56
Nepumuk
Hallo Jonas,
hast du den Pfad in:
Const FOLDER_PATH As String = "G:\Eigene Dateien\Eigene Tabellen\" 'Anpassen !!!
auch angepasst und auch den abschließenden \ nicht vergessen?
Ich habe den Code natürlich getestet und bei mir macht er was er soll.
Gruß
Nepumuk

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige