2016-10-01 3 views
-1

Ich habe ein einfaches Makro in Excel erstellt, um eine andere Arbeitsmappe zu öffnen und die Arbeitsblätter in die Arbeitsmappe zu kopieren. Dies funktionierte gut für gewöhnliche xls-Dateien, aber als ich es in einer .xltm-Datei mit einem Makro verwendete, bekam ich wegen des darin enthaltenen Makros einen Out-of-bounds-Fehler.VBA: Blätter aus einer anderen Arbeitsmappe mit Makro importieren

Gibt es einen möglichen Weg in Excel VBA, um eine Arbeitsmappe zu öffnen und kopieren und Blatt darin ein Makro enthalten?

Mein Code

Dim directory As String, fileName As String, sheet As Worksheet, total As Integer 
Application.ScreenUpdating = False 
Application.DisplayAlerts = False 
directory = "c:\" 
fileName = Dir(directory & "book1.xls") 
Workbooks.Open (directory & fileName) 
For Each sheet In Workbooks(fileName).Worksheets 
    total = ThisWorkbook.Worksheets.Count 
    Workbooks(fileName).Worksheets(sheet.Name).Copy after:=ThisWorkbook.Worksheets(total) 

Next sheet 

Danke Jungs,

+0

nur um darauf hinzuweisen, dass innerhalb der 'For Each Sheet'-Schleife können Sie einfach' sheet' statt 'Workbooks (fileName) .Worksheets (sheet.Name)' – user3598756

Antwort

0

Könnte es etwas mit Ihrem

fileName = Dir(directory & "book1.xls") 

zu tun, wenn Sie eine xlsm Datei stattdessen verwenden?

+1

Vielleicht müssen Sie die Datei als .xlsm speichern bevor Sie die Blätter kopieren. –

+0

Hallo. Danke für die Antwort. Ich habe den Dateinamen in die fragliche Datei geändert, die eine Schaltfläche und ein Makro enthält, wo sie eine einmal angeklickte Seite hinzufügt. Der Debugger stoppte in der Zeile des importierten Blattes, wo er versucht, ein neues Blatt hinzuzufügen. –

Verwandte Themen