Anzeige
Archiv - Navigation
1536to1540
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

VBA Ordner auswählen bestimmte Dateien auslesen

VBA Ordner auswählen bestimmte Dateien auslesen
20.01.2017 08:48:33
Tom
Guten Tag,
ich hoffe hier kann mir jemand helfen. Ich möchte einen ordner auswählen per Dialog der mir bestimmte Dateinamen ausliesst und kopiert dann jeweils ein Worksheet davon erstellt.
Die Dateinamen heißen Tab1.3, Tab1.4....
Ich hoffe jemand kann mir hier helfen !!

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Ordner auswählen bestimmte Dateien auslesen
20.01.2017 09:15:23
UweD
Hallo
der mir bestimmte Dateinamen ausliesst und kopiert dann jeweils ein Worksheet davon erstellt
das ist mir zu ungenau beschrieben...
hier mal
- auswählen Verzeichnis
- notieren der gefundenenDateien, die der Filterung entsprechen
 Sub alle_Dateien_Verzeichnis()
    Dim Dlg As FileDialog, i&
    Dim Si, Ext$, Datei$
    Set Dlg = Application.FileDialog(msoFileDialogFolderPicker) 'Verzeichnis wählen 
    If Dlg.Show = True Then
        For Each Si In Dlg.SelectedItems
            Ext = "Tab?.*"
            Si = IIf(Right(Si, 1) = "\", Si, Si & "\")
            Datei = Dir(Si & Ext)
            Do While Len(Datei) > 0
                i = i + 1
                
                ActiveSheet.Cells(i, 1) = Datei
                
                Datei = Dir() ' nächste Datei 
            Loop
        Next
    End If
End Sub

LG UweD
Anzeige
AW: VBA Ordner auswählen bestimmte Dateien auslesen
20.01.2017 09:27:26
Tom
ich hab mich leider falsch ausgedrückt!! Vielen dank erstmal für die Hilfe !!!!! Ich meine er soll den Inhalt der Datei auf Tabelle2 kopieren und die nächste Datei in Tabelle3
AW: VBA Ordner auswählen bestimmte Dateien auslesen
20.01.2017 09:29:04
Tom
und in diesen verzeichnis nur nach den bestimmten dateinamen suchen wenn diese datei z.B. Tab1.3.xls heißt den Inhalt in Tabelle2 kopieren
AW: Bahnhof...
20.01.2017 09:38:46
UweD
genauere Beschreibung erforderlich
AW: Bahnhof...
20.01.2017 09:44:26
Tom
Ich möchte gern mehrere Dateien aus einen Ordner einlesen aber nur bestimmte. In diesen Ordner sind ich 20-30 xls Dateien aber ich brauch nur 5-6 Dateien die in eine Arbeitsmappe zusammengeführt werden sollen und am besten jede eine eigenen Worksheet bekommt als die Datei Tab1.3.xls findet man dann im Worksheet2 und die nächste im Worksheet3. Das wäre am besten wenn ich nur den Pfad auswähle und er nimmt automatisch immer die Datei die ich brauche die haben auch immer den selben Namen.
ich hab auch schon Code gefunden aber ich weis nicht wie ich weiter komme hier ist der Code:
Option Explicit
'by J.Ehrensberger
Private Function FileSearchFSO(ByRef Files As Variant, ByVal InitialPath As String, Optional  _
ByVal FileName As String = "*", _
Optional ByVal SubFolders As Boolean = False) As Long
Dim mobjFSO As Object, mfsoFolder As Object, mfsoSubFolder As Object, mfsoFile As Object
Set mobjFSO = CreateObject("Scripting.FileSystemObject")
Set mfsoFolder = mobjFSO.GetFolder(InitialPath)
On Error Resume Next
For Each mfsoFile In mfsoFolder.Files
If Not mfsoFile Is Nothing Then
If LCase(mobjFSO.GetFileName(mfsoFile)) Like LCase(FileName) Then
If IsArray(Files) Then
ReDim Preserve Files(UBound(Files) + 1)
Else
ReDim Files(0)
End If
Files(UBound(Files)) = mfsoFile
End If
End If
Next
If SubFolders Then
For Each mfsoSubFolder In mfsoFolder.SubFolders
FileSearchFSO Files, mfsoSubFolder, FileName, SubFolders
Next
End If
If IsArray(Files) Then FileSearchFSO = UBound(Files) + 1
On Error GoTo 0
Set mobjFSO = Nothing
Set mfsoFolder = Nothing
End Function
Private Function fncBrowseForFolder(Optional ByVal defaultPath = "") As String
Dim objFlderItem As Object, objShell As Object, objFlder As Object
Set objShell = CreateObject("Shell.Application")
Set objFlder = objShell.BrowseForFolder(0&, "Ordner auswählen...", 0&, defaultPath)
If objFlder Is Nothing Then GoTo ErrExit
Set objFlderItem = objFlder.Self
fncBrowseForFolder = objFlderItem.Path
ErrExit:
Set objShell = Nothing
Set objFlder = Nothing
Set objFlderItem = Nothing
End Function
Sub test()
Dim a
Dim result As Long, l As Long, strFolder As String, strExt As String
strFolder = fncBrowseForFolder
If strFolder = "" Then Exit Sub
strExt = "xls" 'gesuchte Dateiendung
result = FileSearchFSO(a, strFolder & "\", "*." & strExt, True)
If result  0 Then
For l = 0 To UBound(a)
'hier der Code zum Öffnen/Auslesen der Dateien
Next
End If
End Sub

Anzeige
AW: Bahnhof...
20.01.2017 10:46:42
UweD
- soll aus den 5-6 Dateien immer nur ein bestimmtes Blatt benutzt werden
- soll dabei das ganze Blatt kopiert werden
- oder nur Werte aus dem Blatt?
- Bestehen in der Zusammenführungsdatei beireits die Tabellenblätter für die neuen Werte, oder sollen die erzeugt werden
- soll im nächsten Durchlauf dann das ursprüngliche Blatt gelöscht und anschließend neu importiert werden
- oder wie soll das ganze Ablaufen?
AW: Bahnhof...
20.01.2017 10:54:04
Tom
Am liebsten soll per Dialog ein Ordner ausgewählt werden wie bereits erwähnt und dann aus den xls Dateien: Tab1.3, Tab1.4, Tab1.7, Tab1.8, Tab1.9, Tab1.10, R3 jeweils das erste Worksheet rauskopiert werden und als neues Worksheet in meine Arbeitsmappe eingefügt werden. So das ich für jede Datei dann ein Worksheet besitze. Es sollen neue Tabellenblätter erzeugt werden bitte. Am liebsten soll das ganze Blatt kopiert werden. Vielen vielen vielen vielen Dank im Voraus
Anzeige
AW: Bahnhof...
20.01.2017 13:02:39
UweD
Hallo
in Spalte A stehen die Dateien, die berücksichtigt werden sollen.

Tabelle1
 A
1Tab1.3
2Tab1.4
3Tab1.7
4Tab1.8
5Tab1.9
6Tab1.10
http://excel-inn.de/dateien/vba_beispiele/tabellenanzeige_in_html_addin.zip
http://Hajo-Excel.de/tools.htm
XHTML-Tabelle zur Darstellung in Foren, einschl. der neuen Funktionen ab Version 2007
Add-In-Version 21.10 einschl. 64 Bit


In ein normales Modul:
Option Explicit 
 
 Sub Dateien_Verzeichnis()  
    On Error GoTo Fehler 
    Dim Dlg As FileDialog, Pfad As String, Ext As String 
    Dim Datei, WBM As Workbook, WBC As Workbook 
    Dim TBM As Worksheet, TBC As Worksheet 
    Set Dlg = Application.FileDialog(msoFileDialogFolderPicker) 'Verzeichnis wählen 
    Set WBM = ThisWorkbook 
     
    'Vorgaben 
    Set TBM = WBM.Sheets("Tabelle1") 
    Ext = ".xlsx" 
    Dlg.InitialFileName = "C:\Temp\" 'Welches Verzeichnis soll voreingestellt sein" 
 
 
    Application.ScreenUpdating = False 
    If Dlg.Show = True Then 
        Pfad = Dlg.SelectedItems(1) & "\" 
        For Each Datei In TBM.Columns(1).SpecialCells(xlCellTypeConstants, 2) 
            If Dir(Pfad & Datei & Ext) = "" Then 
                MsgBox Pfad & Datei & Ext & "  existiert nicht" 
            Else 
                 
                'Altes Blatt löschen 
                Application.DisplayAlerts = False 
                On Error Resume Next 
                WBM.Sheets(Datei.Text).Delete 
                On Error GoTo Fehler 
                Application.DisplayAlerts = True 
                 
                 
                'Datei öffnen 
                Set WBC = Workbooks.Open(Filename:=Pfad & Datei.Text & Ext) 
                 
                'Blatt kopieren 
                WBC.Sheets(1).Copy After:=WBM.Sheets(WBM.Sheets.Count) 
                 
                 
                'Blatt umbenennen 
                WBM.Sheets(WBM.Sheets.Count).Name = Datei 
                 
                'Datei schließen 
                WBC.Close SaveChanges:=False 
                 
            End If 
        Next 
    End If 
    WBM.Sheets(1).Activate 
     
    Err.Clear 
Fehler: 
    Application.DisplayAlerts = True 
    If Err.Number <> 0 Then MsgBox "Fehler: " & _
        Err.Number & vbLf & Err.Description: Err.Clear 
End Sub 
 

LG UweD
Anzeige
AW: Bahnhof...
23.01.2017 06:39:47
Tom
Vielen Dank für die schnelle Antwort!! Leider tritt bei mir dort ein Fehler auf!! Ich versuche es nochmal anders zu beschreiben ich hätte gern das ich per Dialog den Pfad auswähle. Dort sind mehrere Datein in den Ordner aber das Makro soll bitte nur die xls Dateien ansprechen mit den Namen: Tab1.3, Tab1.4, Tab1.7, Tab1.8, Tab1.9, Tab1.10, R3. Von jeden xls datei die angesprochen wird soll bitte immer die Tabelle1 in der Datei kopiert werden und als neues Tabellenblatt eingefügt werden so das ich dann 7 Tabellenblätter besitze mit den inhalt von den Dateien. Vielen vielen Dank im Voraus.
AW: Bahnhof...
23.01.2017 06:52:05
UweD
Und genau das macht das Makro.
Bis auf die Datei R3, die fehlt in der Liste der zu kopierenden Dateien.
Welche Fehlermeldung kommt denn?
Hast du im Makro die erforderlichen Anpassungen bei den VORGABEN vorgenommen?
Den Tabellenblattnamen, das Startverzeichnis und die Dateiendung?
Anzeige
AW: Bahnhof...
23.01.2017 07:13:47
Tom
Es erscheint: "Fehler 1004 Keine Zelle gefunden"
AW: Bahnhof...
23.01.2017 07:26:22
UweD
Hast du in tabelle1 in SpalteA auch die Namen der Dateien (ohne . Xls..) eingetragen?
So wie in meinem Beispiel gezeigt?
AW: Bahnhof...
23.01.2017 07:35:48
Tom
Ja aber mit Leerzeile das war mein Fehler!! Es funktioniert wunderbar !! Vielen Vielen Dank!!!!!
Prima! Danke für die Rückmeldung.
23.01.2017 08:29:37
UweD

40 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige