Hallo liebes VBA Forum :)
Ich habe ein Makro welches mir mehrere Ausgewählte Excel in 1 Excel zusammenfügt.
Wenn ich das Makro normal über Entwicklertools => Makros starte funktioniert alles bestens.
Jedoch will ich das ganze über ein Ribbon Button machen. Ich hab dies schon alles soweit (mit Costum UI Editor)
Wenn ich es dann aber über den Ribbon Button starte kann ich zwar noch Dateien auswählen aber dann kommt es zu einem Laufzeitfehler:
"Die Methode 'Copy' für das Objekt '_Worksheet' ist fehlgeschlagen"
Wenn ich debugge springt er zu folgender Zeile:
wksT.Copy wbkZiel.Worksheets(wbkZiel.Worksheets.Count)
Kann mir da jemand helfen?
Hier das ganze Makro: (Wenn ihr das ohne Ribbon testet dann das "control As IRibbonControl" in den Klammern anfangs löschen)
Sub Excelzusammenfuegen(control As IRibbonControl)
'GetOpenFileName Dialog: auch zur mehrfach Auswahl von Dateien
'es wird der Filename mit dem Path zurückgegeben
'Zur Mehrfachauswahl einzeln: Strg Taste gedrückt halten und Files anklicken
'oder Shift Taste gedrückt halten und erste + letztes File anclicken
'Wird Multiselect verwendet gibt die GetOpenFileName ein Array zurück
'code kann ggf. mehrfach ausgeführt werden bis zB alle Unterordner nacheinander ereicht wurden
Dim vntPathAndFileNames As Variant 'kein String !
Dim strPathAndFile As String
Dim lngI As Long
Dim wbkMappe As Workbook
Dim wksT As Worksheet
Dim wbkZiel As Workbook
Set wbkZiel = ThisWorkbook 'Beispiel ggf. anpassen
vntPathAndFileNames = Application.GetOpenFilename( _
FileFilter:="Excel Files (*.xlsx), *.xlsx", _
Title:="Wählen sie die gewünschten Dateien aus (mit STRG). mit STRG-A wählen sie alle Dateien aus", _
MultiSelect:=True)
If VarType(vntPathAndFileNames) = vbBoolean Then
MsgBox "Abgebrochen!"
Else
For lngI = LBound(vntPathAndFileNames) To UBound(vntPathAndFileNames)
strPathAndFile = vntPathAndFileNames(lngI)
Set wbkMappe = Application.Workbooks.Open(strPathAndFile)
For Each wksT In wbkMappe.Worksheets
wksT.Copy wbkZiel.Worksheets(wbkZiel.Worksheets.Count)
Next
wbkMappe.Close False
Next
End If
End Sub
|