Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Excel-Dateien aus Ordner auslesen

Betrifft: Excel-Dateien aus Ordner auslesen von: M.Bacher
Geschrieben am: 05.11.2014 15:09:57

Hallo, nach langem habe ich mal wieder eine Frage, die sich auf ein Thema bezieht das auch schon länger her hier im Forum diskutiert wurde (2007).
Hier der Link:
https://www.herber.de/forum/archiv/864to868/867500_Excel_Dateien_aus_Ordner_auslesen.html

Nun hat Josef Ehrenberger eine wunderbare Lösung aufgezeigt, die ich bereits erweitert und an meine Bedürfnisse angepasst habe.
Es gibt nur ein kleines Problem beim einlesen, wo ich leider nicht weiterkomme.
Im Bereich wo das auszulesende Tabellenblatt angesprochen wird:
strTabName = "Tabelle1" 'Name der Tabellenblätter anpassen!
liegt das Problem. Es gibt bei mir Tabellen die "Deckblatt" heißen oder "cover sheet" als englische Version. Wie muss ich das abändern das er beide ohne Nachfrage akzeptiert.
Im VB in der Liste der Tabellen ist "Decklatt" und "cover sheet" immer Tabelle1, nur der Name ist unterschiedlich. Ansprechen mit "Tabelle1" funktioniert nicht. Mit "or" und beide Namen hintereinander gibts einen Bug...
Wer kann mir helfen? Danke!
Mfg Mario Bacher

Hier der Code den Josef bereitgestellt hat:

' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub Daten_Lesen()
Dim strPath As String, strFile As String, strTabName As String
Dim lngR As Long

strPath = "F:\Temp\km\" 'Verzeichnis anpassen!

strTabName = "Tabelle1" 'Name der Tabellenblätter anpassen!

strFile = Dir(strPath & "*.xls")

lngR = 1

With ThisWorkbook.Sheets("Tabelle1") 'Name der Ausgabetabelle anpassen!
    
    .Range("A2:B" & Rows.Count).ClearContents
    
    Do Until strFile = ""
        lngR = lngR + 1
        .Cells(lngR, 1) = strFile
        .Cells(lngR, 2).Formula = "=SUM('" & strPath & "[" & strFile & "]" & _
            strTabName & "'!$K$7:$K$17)"
        .Cells(lngR, 2) = .Cells(lngR, 2).Value
        strFile = Dir
    Loop
    
End With

End Sub

  

Betrifft: AW: Excel-Dateien aus Ordner auslesen von: ChrisL
Geschrieben am: 05.11.2014 15:32:36

Hallo Mario

Wenn es immer das erste Blatt ist, kannst Du es über den Index (Nummer) ansprechen:

Sub Daten_Lesen()
Dim strPath As String, strFile As String
Dim lngR As Long

strPath = "F:\Temp\km\" 'Verzeichnis anpassen!

strFile = Dir(strPath & "*.xls")

lngR = 1

With ThisWorkbook.Sheets(1)
    
    .Range("A2:B" & Rows.Count).ClearContents
    
    Do Until strFile = ""
        lngR = lngR + 1
        .Cells(lngR, 1) = strFile
        .Cells(lngR, 2).Formula = "=SUM('" & strPath & "[" & strFile & "]" & _
            strTabName & "'!$K$7:$K$17)"
        .Cells(lngR, 2) = .Cells(lngR, 2).Value
        strFile = Dir
    Loop
    
End With

End Sub
cu
Chris


  

Betrifft: AW: Excel-Dateien aus Ordner auslesen von: M.Bacher
Geschrieben am: 05.11.2014 15:46:51

Hallo Chris,
ich glaube jetzt hast Du in Deinem Beispiel das Ansprechen der Quelldateien unter den Tisch fallen lassen und darum geht's ja:
strTabName = "Tabelle1" 'Name der Tabellenblätter anpassen! ist weg... Wo soll er Daten auslesen?
Deine Änderung With ThisWorkbook.Sheets(1) spricht ja die Tabelle an wo es hineingeschrieben werden soll, das passt ja... Mein Problem ist, das ich ja 2 verschiedene Namen der Tabelle1 in den Quelldateien habe.

Mfg M.Bacher


  

Betrifft: AW: Excel-Dateien aus Ordner auslesen von: ChrisL
Geschrieben am: 05.11.2014 16:31:13

Hi Mario

Da war ich etwas zu schnell. Neuer Vorschlag wie folgt:

Sub Abgekuerzt()
Dim strPath As String, strFile As String, strTabName As String
strPath = "F:\Temp\km\" 'Verzeichnis anpassen!
strFile = Dir(strPath & "*.xls")
strTabName = XorY(strPath, strFile)
MsgBox strTabName
End Sub

Private Function XorY(sPfad As String, sDatei As String) As String
On Error GoTo fehler
If ExecuteExcel4Macro("'" & sPfad & "[" & sDatei & "]Deckblatt'!R50000C1") = 0 Then XorY = " _
Deckblatt"
Exit Function
fehler:
XorY = "cover sheet"
End Function
cu
Chris


  

Betrifft: AW: Excel-Dateien aus Ordner auslesen von: Rudi Maintaire
Geschrieben am: 05.11.2014 16:47:41

Hallo,
teste mal:

Sub Daten_Lesen()
  Dim strPath As String, strFile As String, strTabName1 As String, strTabName2 As String
  Dim lngR As Long, retVal As Variant
  
  strPath = "F:\Temp\km\" 'Verzeichnis anpassen!
  
  strTabName1 = "Deckblatt" 'Name der Tabellenblätter anpassen!
  strTabName2 = "cover sheet"
  strFile = Dir(strPath & "*.xls")
  
  lngR = 1
  
  With ThisWorkbook.Sheets("Tabelle1") 'Name der Ausgabetabelle anpassen!
    
    .Range("A2:B" & Rows.Count).ClearContents
    
    Do Until strFile = ""
      lngR = lngR + 1
      .Cells(lngR, 1) = strFile
      retVal = ExecuteExcel4Macro("'" & strPath & "[" & strFile & "]" & strTabName1 & "'!R1C1")
      If IsError(retVal) Then
        .Cells(lngR, 2).Formula = "=SUM('" & strPath & "[" & strFile & "]" & _
          strTabName2 & "'!$K$7:$K$17)"
      Else
        .Cells(lngR, 2).Formula = "=SUM('" & strPath & "[" & strFile & "]" & _
          strTabName1 & "'!$K$7:$K$17)"
      End If
      .Cells(lngR, 2) = .Cells(lngR, 2).Value
      strFile = Dir
    Loop
    
  End With
  
End Sub

Gruß
Rudi


  

Betrifft: AW: Excel-Dateien aus Ordner auslesen von: M.Bacher
Geschrieben am: 06.11.2014 08:10:35

Guten Morgen!
Vielen Dank für die Hilfe, Chris und Rudi.

Nach eingehendem Studium beider Lösungen habe ich Rudi's Vorschlag eingesetzt. Es funktioniert tadellos!! Vielen Dank nochmals dafür.
Gruß Mario



 

Beiträge aus den Excel-Beispielen zum Thema "Excel-Dateien aus Ordner auslesen"