Hallo mirkoH,
Der von Dir gelieferte VBA-Code funktioniert im wesentlichen
korrekt.
Man musste lediglich einige Zeilen anpassen.
Viele Grüße,
BigBen
Hallo BigBen,
jetzt tut sich leider gar nichts mehr. Hier ist der andere Code den ich heute morgen meinte. Vielleicht kannst du mir diesen auch noch optimieren?
Danke im voraus
Mirko
Option Explicit
Sub Sammeln()
Dim FName$, FCount%, R%, c%, nC, i&
Dim Bereich As Range
Dim FileArray()
Dim ProcessCounter As Integer
Application.ScreenUpdating = False
ChDrive „d“
ChDir „d:\Testordner“
FName = Dir("*.xlsx")
Do While FName „“
FCount = FCount + 1
ReDim Preserve FileArray(1 To FCount)
FileArray(FCount) = FName
FName = Dir()
Loop
i = 1
For ProcessCounter = 1 To FCount
Application.DisplayAlerts = False
Workbooks.Open FileArray(ProcessCounter)
On Error Resume Next
R = Cells.Find("*", [a1], , , xlByRows, _
xlPrevious).Row
c = Cells.Find("*", [a1], , , _
xlByColumns, xlPrevious).Column
If Err = 91 Then GoTo WEITER1
Set Bereich = ActiveWorkbook.Worksheets(1) _
.Range(Cells(1, 1), Cells(R, c))
Bereich.Copy Tabelle1.Cells(i, 1)
i = i + R + 1
On Error GoTo 0
WEITER1:
ActiveWorkbook.Close
Application.DisplayAlerts = True
Next ProcessCounter
End Sub
Ich bekomme den Laufzeitfehler 1004 Die Methode 'Open für das Objekt ‚Workbooks‘ ist fehlgeschlagen.
Danke im voraus.
Mirko
— VBA-Code —
Option Explicit
Sub makro1()
Dim Pfad1 As String, name1 As String, aName As String
Worksheets(1).Activate
Cells.Select
Selection.Delete Shift:=xlUp
Range(„A1“).Select
aName = ActiveWorkbook.Name
Pfad1 = ActiveWorkbook.Path & „“
name1 = Dir(Pfad1, vbNormal)
Do While name1 „“
If name1 aName Then
If Right(name1, 4) = „.xlsx“ Then
Call uebernehmen(Pfad1, name1, aName)
End If
End If
name1 = Dir
Loop
Cells.Select
Cells.EntireColumn.AutoFit
Cells(1, 1).Select
End Sub
Sub uebernehmen(Pfad1 As String, name1 As String, aName As
String)
Dim lz As Long, l1 As Long, l2 As Long
'uebernehmen:
Workbooks.Open Filename:=Pfad1 & name1
Worksheets(1).Activate
lz = Range(„b65536“).End(xlUp).Row
If lz > 1 Then
Range(Cells(2, 2), Cells(lz, 18)).Select
Selection.Copy
Windows(aName).Activate
l1 = Range(„a65536“).End(xlUp).Row + 1
Cells(l1, 2).Activate
Selection.PasteSpecial Paste:=xlPasteValues,
Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.DisplayAlerts = False
Windows(name1).Close
Application.DisplayAlerts = True
l2 = Range(„b65536“).End(xlUp).Row
Range(Cells(l1, 1), Cells(l2, 1)) = name1
Else
Windows(name1).Close
End If
'Return
End Sub