Hallo Joachim,
wenn deine xls-Dateien wirklich "verkappte" Text-Dateien sind, dann dann probiere es mal mit einer der folgenden Varianten deines Makros. Den Dilimiter (Trennzeichen zwischen den Spalten) muss du ggf. anpassen. Siehe hierzu die VBA-Hlfe zu Workbooks.Open/Workbooks.OpenText.
Ob die xls-Dateien in Wirklichkeit Textdateien sind kannst du einfach feststellen, indem du eine der Dateien in einem Text-Editor öffnest.
Gruß
Franz
Sub aktualisieren()
Application.ScreenUpdating = False
On Error Resume Next
Dim sFile As String, n As Integer, wkb As Workbook, arrFiles, iFiles As Integer
Const sPfad As String = "i:\Excel\Firma\Forecast\test\"
arrFiles = Array("karl bereit*.xls", "simm bereit*.xls")
For iFiles = 0 To UBound(arrFiles)
sFile = Dir(sPfad & arrFiles(iFiles))
Do While sFile ""
n = n + 1
Set wkb = Workbooks.Open(Filename:=sPfad & sFile, ReadOnly:=True, _
Format:=6, Delimiter:=";", Local:=True)
wkb.Sheets(1).Range("A1:O5000").Copy ThisWorkbook.Sheets(n).Range("A1")
wkb.Close False
sFile = Dir
Loop
Next
Application.ScreenUpdating = True
End Sub
Variante mit "OpenText
Sub aktualisieren_Variante()
Application.ScreenUpdating = False
On Error Resume Next
Dim sFile As String, n As Integer, wkb As Workbook, arrFiles, iFiles As Integer
Dim arrFieldInfo() As Integer, intSpalte As Integer
Const sPfad As String = "C:\Users\Public\Test\"
' Const sPfad As String = "i:\Excel\Firma\Forecast\test\"
arrFiles = Array("karl bereit*.xls", "simm bereit*.xls")
'Daten-Array mit Informationen zum Format der einzulesenden Spalten erstellen
intSpalte = 15 'Anzahl der Spalten in Textdatei
ReDim arrFieldInfo(1 To intSpalte, 1 To 2)
For intSpalte = 1 To intSpalte
arrFieldInfo(intSpalte, 1) = intSpalte
Select Case intSpalte
Case 1 To 4, 7, 9, 12, 15
arrFieldInfo(intSpalte, 2) = 1 'Standard
Case 5, 8, 10, 11
arrFieldInfo(intSpalte, 2) = 2 'als Text einlesen
Case 999
arrFieldInfo(intSpalte, 2) = 3 'xlMDYFormat - z.B.: 8/22/2005
Case 6, 13, 14, 999
arrFieldInfo(intSpalte, 2) = 4 'xlDMYFormat - z.B.: 01.02.2000
Case 999
arrFieldInfo(intSpalte, 2) = 5 'xlYMDFormat - z.B.: 2001-02-01
Case 999
arrFieldInfo(intSpalte, 2) = 9 'nicht einlesen
Case Else
arrFieldInfo(intSpalte, 2) = 1 'Standard
End Select
Next
For iFiles = 0 To UBound(arrFiles)
sFile = Dir(sPfad & arrFiles(iFiles))
Do While sFile ""
n = n + 1
Application.Workbooks.OpenText Filename:=sPfad & sFile, Origin:=xlWindows, _
Startrow:=1, DataType:=xlDelimited, Textqualifier:=xlTextQualifierDoubleQuote, _
consecutivedelimiter:=False, Tab:=False, Semicolon:=True, Comma:=False, _
Space:=False, Other:=False, Otherchar:="", Fieldinfo:=arrFieldInfo(), _
DecimalSeparator:=",", ThousandsSeparator:=".", Local:=True
If ActiveWorkbook.Name ThisWorkbook.Name Then
Set wkb = ActiveWorkbook
wkb.Sheets(1).Range("A1:O5000").Copy ThisWorkbook.Sheets(n).Range("A1")
wkb.Close False
End If
sFile = Dir
Loop
Next
Application.ScreenUpdating = True
End Sub