|  
                                             
	< Jetzt funktioniert es! Dauert aber 40 min bis es alles geladen hat. 
	Guten Morgen :D 
	hättest ja gleich x 100 Files schreiben  können, egal - eine Kanne Kaffee mehr ;) 
	Anbei Muster für schlappe 5 sec 
	Gruß & Tschüss 
Option Explicit
Sub Werteholen()
'privat nur Test
'Dim obTimer As New CHighResTimer  'Test - Zeitmessung
'
Dim obj_fso As Object
Set obj_fso = CreateObject("Scripting.FileSystemObject")
'
'
Dim rngPfadDatei As Range, rngFcnt As Range
'
  'Zeile 1 Überschrift A= voller Dateipfad !, B = Zustand, C:Q = Zahlen 1 - 15, R = Datenfeld
  Set rngPfadDatei = ActiveWorkbook.Sheets("Tabelle1").Range("A2:A101")
  ActiveWorkbook.Sheets("Tabelle1").Range("B2:R101").Clear
  '
  'obTimer.StartTimer  'Test - Zeitmessung starten
  For Each rngFcnt In rngPfadDatei
    If obj_fso.fileExists(rngFcnt.Formula) Then
      rngFcnt.Offset(0, 1).Formula = "OK"
      '
      'Nur ein Datenfeld holen !!!  - Datei , Bereichsangabe exakt, Ziel
      'add Ziel - hattu nur Daten im Range, dann False und Ziel + 1 Zeile
      If NurEinDatenfeld(rngFcnt.Formula, "[Tabelle4$B3:B300]", "R3", False) Then
      End If
      '
      MeineAuswertung rngFcnt, "R2" 'Datenfeldbeginn
      '
    Else
      rngFcnt.Offset(0, 1).Formula = "NA"
    End If
  Next rngFcnt
  
  Columns("R:R").Clear  'letztes Datenfeld
  '
  'obTimer.StopTimer 'Test - Zeitmessung beenden, ausgeben
  'Debug.Print "100 Dateien x 15 Vergleiche " & WorksheetFunction.Round(obTimer.Elapsed, 4) & " Sekunden"
  'das waren schlappe 5 Sekunden
Set obj_fso = Nothing
'privat nur Test
Set obTimer = Nothing
End Sub
Private Sub MeineAuswertung(ByVal MeineDatei As Range, _
  strDatenfeld As String)
Dim rngDatenfeld As Range, rngcnt As Range
Dim SucheWert As Double
'
On Error GoTo errorhandler
  Set MeineDatei = MeineDatei.End(xlToRight).Offset(0, 1) 'erste leere
  Set rngDatenfeld = Range(strDatenfeld)
  Set rngDatenfeld = Range(rngDatenfeld, rngDatenfeld.End(xlDown)) 'Datenfeld bestimmen
  '
  Do While MeineDatei.Column < rngDatenfeld.Column
    SucheWert = Cells(1, MeineDatei.Column)
    MeineDatei.Value = WorksheetFunction.CountIf(rngDatenfeld, SucheWert)
    Set MeineDatei = MeineDatei.Offset(0, 1)
  Loop
On Error GoTo 0
Exit Sub
errorhandler:
MsgBox "Fehler in Auswertung " & MeineDatei.Address, vbCritical
On Error GoTo 0
End Sub
Private Function NurEinDatenfeld(ByVal strPfadDatei As String, _
  ByVal strDatenBereich, ByVal strZieladresse, _
  ByVal Kopf As Boolean) As Boolean
Dim oDatenfeld As Object
Dim strVerbindung As String
Dim strSQL As String
'Achtung Microsoft.ACE.OLEDB.12.0 einbinden
strVerbindung = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & strPfadDatei & ";" & _
"Extended Properties=""Excel 12.0 Xml;HDR=YES;IMEX=1"""
strSQL = "SELECT * FROM " & strDatenBereich
On Error GoTo errorhandler
Set oDatenfeld = CreateObject("ADODB.Recordset")
'
oDatenfeld.Open strSQL, strVerbindung, 0, 1, 1
'
If Not oDatenfeld.EOF Then
  ActiveSheet.Range(strZieladresse).CopyFromRecordset oDatenfeld
  If Not Kopf Then Range(strZieladresse).Offset(-1, 0).Value = _
    oDatenfeld.Fields(0).Name
  NurEinDatenfeld = True  'erfolgreich
Else
MsgBox "keine Daten in " & strPfadDatei, vbCritical
End If
errorhandler:
oDatenfeld.Close
Set oDatenfeld = Nothing
On Error GoTo 0
End Function
	  
     |