Anzeige
Archiv - Navigation
1432to1436
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

Liste aus mehreren Dateien mit VBA erstellen

Liste aus mehreren Dateien mit VBA erstellen
30.06.2015 16:15:25
Roman
Hi @all,
ich bräuchte dringend eure Hilfe!
Wie kann ich mit Hilfe eines VBA-Codes Werte aus verschiedenen Excel-Files eines Ordners automatisch in eine neue Excel-Datei importieren.
Die Werte sitzten in jeder Excel-Datei an der gleichen Stelle zB Überschrift in C10 Wert dazu in D10 usw...
In der Auswertungsdatei soll dann eine durgängige Liste entstehen zB C10 soll in A1 stehen bzw. die Werte dann von D10 der verschiedenen Dateien dann drunter usw...
Weiters sollte, sofern in besagtem Ordner eine neue Datei dazukommt, diese beim nächsten Importversuch automatisch miteinbezogen werden, bzw. in der Auswertungsdatei alles neu überschrieben werden.
Hat wer eine Idee zum Umsetzen!?
lg Roman

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Aus welchem Tabellenblatt? o.T.
30.06.2015 17:59:27
Sepp
Gruß Sepp

AW: Liste aus mehreren Dateien mit VBA erstellen
30.06.2015 21:03:42
Roman
hi, grundsätzlich aus tabelle1! müssen die immer gleich heissen oder können die unterschiedliche namen haben?
lg roman

AW: Liste aus mehreren Dateien mit VBA erstellen
30.06.2015 21:41:41
Sepp
Hallo Roman,
folgender Code liest die Daten aus D10 aller xl-Dateien eines Verzeichnisses aus. Dabei wird immer das erste Tabellenblatt ausgelesen, egal welchen Namen es trägt. Die erste Datenzeile enthält die Überschrift aus C10.
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub import()
  Dim strPath As String, strFile As String, strTable As String
  Dim lngI As Long, vntValues() As Variant
  
  With Application.FileDialog(msoFileDialogFolderPicker)
    .InitialFileName = "E:\Forum"
    .Title = "Datenimport Ordnerauswahl"
    .ButtonName = "Import Starten"
    .InitialView = msoFileDialogViewList
    If .Show = -1 Then
      strPath = .SelectedItems(1)
      If Right(strPath, 1) <> "\" Then strPath = strPath & "\"
    End If
  End With
  
  If Len(strPath) Then
    strFile = Dir(strPath & "*.xls*", vbNormal)
    Do While Len(strFile)
      strTable = GetSheetNames(strPath & strFile)(0)
      Redim Preserve vntValues(lngI)
      If lngI = 0 Then
        vntValues(lngI) = GetValue(strPath, strFile, strTable, "C10")
        lngI = lngI + 1
        Redim Preserve vntValues(lngI)
      End If
      vntValues(lngI) = GetValue(strPath, strFile, strTable, "D10")
      lngI = lngI + 1
      strFile = Dir
    Loop
  End If
  
  If lngI > 0 Then
    Cells(1, 1).Resize(UBound(vntValues) + 1, 1) = Application.Transpose(vntValues)
  End If
  
End Sub


Private Function GetValue(path As String, file As String, sheet As String, ref As String) As Variant
  Dim arg As String
  On Error GoTo ErrExit
  
  arg = "'" & path & "[" & file & "]" & sheet & "'!" & Range(ref).Range("A1").Address(, , xlR1C1)
  
  GetValue = ExecuteExcel4Macro(arg)
  Exit Function
  ErrExit:
  GetValue = xlErrValue
End Function


Private Function GetSheetNames(ByVal FileName As String) As Variant
  'original by Bob Phillips, adapted by j.ehrensberger
  Dim objADO_Connection As Object, objADO_Catalog As Object, objADO_Tables As Object
  Dim lngIndex As Long, intLength As Integer, intPos As Integer, intStart As Integer
  Dim strConString As String, strTable As String
  Dim vntTmp() As Variant
  
  If Mid(FileName, InStrRev(FileName, ".") + 1) = "xls" Then
    strConString = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Extended Properties=Excel 8.0;" & _
      "Data Source=" & FileName & ";"
  ElseIf Mid(FileName, InStrRev(FileName, ".") + 1) Like "xls?" Then
    strConString = "Provider=Microsoft.ACE.OLEDB.12.0;" & "Extended Properties=""Excel 12.0;HDR=YES"";" _
      & "Data Source=" & FileName & ";"
  Else
    Exit Function
  End If
  
  Set objADO_Connection = CreateObject("ADODB.Connection")
  objADO_Connection.Open strConString
  Set objADO_Catalog = CreateObject("ADOX.Catalog")
  Set objADO_Catalog.ActiveConnection = objADO_Connection
  
  For Each objADO_Tables In objADO_Catalog.Tables
    strTable = objADO_Tables.Name
    intLength = Len(strTable)
    intPos = 0
    intStart = 1
    'Worksheet name with embedded spaces enclosed by single quotes
    If Left(strTable, 1) = "'" And Right(strTable, 1) = "'" Then
      intPos = 1
      intStart = 2
    End If
    'Worksheet names always end in the "$" character
    If Mid$(strTable, intLength - intPos, 1) = "$" Then
      Redim Preserve vntTmp(lngIndex)
      vntTmp(lngIndex) = Mid$(strTable, intStart, intLength - (intStart + intPos))
      lngIndex = lngIndex + 1
    End If
  Next objADO_Tables
  
  If lngIndex > 0 Then GetSheetNames = vntTmp
  
  objADO_Connection.Close
  Set objADO_Catalog = Nothing
  Set objADO_Connection = Nothing
  
End Function


Gruß Sepp

Anzeige
AW: Liste aus mehreren Dateien mit VBA erstellen
30.06.2015 21:56:05
Roman
hallo sepp,
vielen dank für deine rasche antwort! :)
können auch noch weiter zellen ausgelesen werden? bzw. was muss ich dafür ändern?
lg roman

AW: Liste aus mehreren Dateien mit VBA erstellen
30.06.2015 22:01:37
Sepp
Hallo Roman,
sicher kann man auch andere Zellen auslesen, sag doch gleich was du willst, dann braucht man den Code nicht x-Mal umändern. Vor allem wäre interessant, wie deine Daten aufgebaut sind, denn das kann einen großen Unterschied machen.
Gruß Sepp

AW: Liste aus mehreren Dateien mit VBA erstellen
01.07.2015 10:13:10
Roman
Hallo Sepp,
hab dir im Anhang die Auswertungsdatei zusammengestellt!

Die Datei https://www.herber.de/bbs/user/98568.xlsm wurde aus Datenschutzgründen gelöscht


Überschriften habe ich jetzt schon fix reingeschrieben und brauchen nicht mehr importiert werden.
Ansonsten sollen die Werte aller im Ordner befindlichen Excel-files importiert werden und untereinander aufgelistet werden. Summenformel habe ich in der Auswertungsdatei schon hinterlegt!
Brauchst du noch irgendwelche weitere Infos?
Vielen Dank schon mal im Voraus!! :)
lg Roman

Anzeige
AW: Liste aus mehreren Dateien mit VBA erstellen
01.07.2015 18:37:13
Roman
Hallo Sepp,
hab dir im Anhang die Auswertungsdatei zusammengestellt!
https://www.herber.de/bbs/user/98568.xlsm 
Überschriften habe ich jetzt schon fix reingeschrieben und brauchen nicht mehr importiert werden.
Ansonsten sollen die Werte aller im Ordner befindlichen Excel-files importiert werden und untereinander aufgelistet werden. Summenformel habe ich in der Auswertungsdatei schon hinterlegt!
Brauchst du noch irgendwelche weitere Infos?
Vielen Dank schon mal im Voraus!! :)
lg Roman

Anzeige
AW: Liste aus mehreren Dateien mit VBA erstellen
01.07.2015 19:01:23
Sepp
Hallo Roman,
OK, aber wie die Auswertungstabelle aussehen soll ist eine Sache, ich hatte aber nach einem Beispiel der Quelldateien gefragt!
Gruß Sepp

AW: Liste aus mehreren Dateien mit VBA erstellen
02.07.2015 07:38:15
Roman
Hallo Sepp,
anbei eine Importdatei!
https://www.herber.de/bbs/user/98588.xlsx
Spielt es eine Rolle ob die Zellen "normal" beschriftet werden oder via Dropdown ausgewählt werden?
lg Roman

Anzeige
AW: Liste aus mehreren Dateien mit VBA erstellen
03.07.2015 09:01:00
Roman
Hallo Sepp,
ich habe deine Datei ausprobiert - hat aber leider nicht ganz funktioniert, unterhalb das Ergebnis!
https://www.herber.de/bbs/user/98613.xlsm
Könntest du bitte nochmal drüber schaun, habe dir auch beim letzten Post eine Importdatei angehängt.
Bitte dich um Hilfe, da ichs bis MO schaffen sollte, dies umzusetzen. :(
Vielen Dank im Vorhinein für deine Unterstützung!!
lg Roman

AW: Liste aus mehreren Dateien mit VBA erstellen
03.07.2015 18:38:22
Sepp
Hallo Roman,
mangels Information, war ich der Annahme, dass der Import aus Tabelle 1 (Index) erfolgen soll.
Wenn die Tabelle mit den Daten immer "Übersicht" heißt, dann ändere folgende Zeile
strTable = GetSheetNames(strPath & strFile)(0)

ab in
strTable = "Übersicht"
Gruß Sepp

Anzeige
AW: Liste aus mehreren Dateien mit VBA erstellen
04.07.2015 15:02:02
Roman
Hallo Sepp,
vielen, vielen Dank für deine Hilfe!
Hat alles wunderbar geklappt!! :)
glg Roman

320 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige