Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.04.2024 14:18:05
28.04.2024 13:43:14
Anzeige
Archiv - Navigation
1932to1936
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 aus N Dateien Text auslesen

VBA aus N Dateien Text auslesen
07.07.2023 21:45:12
Ronny

Guten Abend,

ich möchte aus verschiedenen Exceldateien Daten per VBA in eine aktuelle Arbeitsmappe auslesen.

In einem Projektordner sind verschiedene xlsx Dateien gespeichert, aus diesen Dateien möchte ich Daten in eine Projektübersichtsliste einlesen.
Die Projektdateien haben den gleichen Aufbau und die Daten stehen immer im selben Tabellenblatt "FS" und im gleichen Bereich (A4:O7)
Das Makro soll nun den Projektordner durchsuchen und die Daten aus genanntem Bereich in die Projektliste schreiben in Tabellenblatt "Daten", immer untereinander.
Die Daten brauchen keinen Formelbezug haben oder Formatierungen, die reinen Daten reichen.
Die Projektdateien, aus denen ausgelesen wird, müssen auch nicht gespeichert werden.
Der Vorteil liegt darin, dass es egal ist ob ich 5 oder 10 Projekte habe, die Projekte müssen nur im Ordner stehen mit dem entsprechenden Dateiaufbau.
Toll wäre noch wenn in der Projektliste in Spalte P die verlinkte Projektdatei stehen würde.
Ist das überhaupt möglich?

Grüße Ronny

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

Betreff
Datum
Anwender
Anzeige
AW: VBA aus N Dateien Text auslesen
08.07.2023 15:23:59
Piet
Hallo Ronny

schau dir bitte mal meine Beispieldatei an. Das sollte deine Lösung sein. Würde mich sehr freuen.
Liste zum Testen bitte mal deine gewünschten Dateien in der Dateiliste auf, und starte den Button kopieren.
Im Ordner auflisten Makro kannst du unerwünschte Dateien überspringen, sie werden dann nicht aufgelistet!
https://www.herber.de/bbs/user/159858.xls

mfg Piet


AW: VBA aus N Dateien Text auslesen
09.07.2023 11:14:13
Pappawinni
Hab auch mal schnell was zusammen geschossen.
Tabellennamen musst du halt ggf. anpassen.
Ansonsten ist das ohne Schnörkel und kommentarlos, sollte aber zu deiner "Aufgabenstellung" passen.


Public Sub collectProjectData()
    
    Dim wksTarget As Worksheet, wksSource As Worksheet
    Dim colPaths As Collection
    Dim i As Long
     
    Set wksTarget = ThisWorkbook.Worksheets("Tabelle1")
    wksTarget.UsedRange.Clear
     
    If ThisWorkbook.path = "" Then
        MsgBox "Store this file in the project folder" & vbCrLf & _
              "before running the macro"
        Exit Sub
    End If
       
    Set colPaths = findFilesInFolderByExt(ThisWorkbook.path, "xlsx")
    
    If colPaths.Count = 0 Then
        MsgBox "no item found"
        Exit Sub
    End If
       
    Dim rngToCopy As Range
    Dim iRow As Long, iCol As Long
    Dim wbkSource As Workbook
    Dim path As Variant
    Dim fso As Object
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    iRow = 1
    iCol = 1
        
    For Each path In colPaths
    
        Set wbkSource = Workbooks.Open(path)
        On Error Resume Next
            Set rngToCopy = wbkSource.Worksheets("VZ").Range("A4:O7")
        On Error GoTo 0
        
        If Not (rngToCopy Is Nothing) Then
            rngToCopy.Copy wksTarget.Range(Cells(iRow, iCol).Address)
            wksTarget.Cells(iRow, iCol + rngToCopy.Columns.Count).Hyperlinks.Add _
                Anchor:=wksTarget.Cells(iRow, iCol + rngToCopy.Columns.Count), _
                Address:=path, TextToDisplay:=fso.getfile(path).Name
            iRow = iRow + rngToCopy.Rows.Count
        End If
        wbkSource.Close
    Next
   
End Sub

Private Function findFilesInFolderByExt(ByVal SourceFolderName As String, ByVal fileExtension As String, _
                                        Optional includeSubfolders As Boolean = False) As Collection
  
  'Liefert eine Collection mit Pfaden von Dateien der Erweiterung fileEtension ausgehend vom Pfad SourceFolderName
  'für includeSubFolders = True erfolgt die Suche rekursiv, also auch in Unterordnern und deren Unterordnern,
  'ausgenommen sind System und Hidden Ordner und natürlich auch Ordner für die keine Leserechte bestehen.
  
  Dim fso As Object, SourceFolder As Object, SubFolder As Object
  Dim FileItem
  Dim Result As New Collection
  Dim i As Long, j As Long, x
  
  
  Set fso = CreateObject("Scripting.FileSystemObject")
    
  If fso.GetDrive(fso.GetDriveName(SourceFolderName)).path = SourceFolderName Then
    Set SourceFolder = fso.GetDrive(fso.GetDriveName(SourceFolderName)).RootFolder
  Else
    Set SourceFolder = fso.GetFolder(SourceFolderName)
  End If

  'check for ReadAccess
  On Error Resume Next
  If Not (SourceFolder.Files.Count >= 0) Then
    Exit Function
  End If
  On Error GoTo 0

  For Each FileItem In SourceFolder.Files
    If LCase(fso.GetExtensionName(FileItem.path)) = LCase(fileExtension) Then
       Result.Add FileItem.path
    End If
  Next FileItem
  
  DoEvents
    
  If includeSubfolders Then
    For Each SubFolder In SourceFolder.SubFolders
      If Not ((SubFolder.Attributes And (vbSystem Or vbHidden)) > 0) Then
        Dim SubResult As Collection
        Set SubResult = findFilesInFolderByExt(SubFolder.path, fileExtension, True)
        If SubResult.Count > 0 Then
            For Each x In SubResult
               Result.Add x
            Next
        End If
        Set SubResult = Nothing
      End If
    Next SubFolder
  End If
  
  Set findFilesInFolderByExt = Result

End Function



Anzeige
AW: Korrektur
09.07.2023 12:07:48
Pappawinni
Da du nur Werte kopieren willst muss da statt

           rngToCopy.Copy wksTarget.Range(Cells(iRow, iCol).Address)
das rein

            rngToCopy.Copy
            wksTarget.Range(Cells(iRow, iCol).Address).PasteSpecial xlPasteValues


AW: VBA aus N Dateien Text auslesen
13.07.2023 21:25:52
Ronny
Hallo
besten Dank für den genialen Code. Das Makro liefert genau das was ich haben möchte und funktioniert super. Die Durchlaufzeiten sind auch sehr kurz. Nochmals besten Dank

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige