Nachfolgender Code soll ein Arbeitsblatt aus einer anderen Datei in die aktuelle Arbeitsmappe importieren. Dies funktioniert einwandfrei wenn der Code in der aktuellen Arbeitsmappe hinterlegt ist. Ich sollte diesen Code aber aus einer anderen (geöffneten) Arbeitsmappe aufrufen können, erhalte aber diese Fehlermeldung:
VBA Fehler in Prozedur - Fehlernummer 1004 - Beschreibung: Die Copy-Methode des Sheet-Objektes konnte nicht ausgeführt werden.
Danke für Hilfe
Hier der Code (danke dem Autor)
Sub DatenHolen()
Dim ExportDatei As Variant
Dim WBQuelle As Workbook, WBZiel As Workbook
Dim lngCalc As Long
On Error GoTo ErrExit
With Application
.ScreenUpdating = False
.EnableEvents = False
lngCalc = .Calculation
.Calculation = -4135
.DisplayAlerts = False
End With
Set WBZiel = ThisWorkbook
ExportDatei = "O:\Vorlagen\Excel\QRZahlschein.xlsm"
If ExportDatei CStr(False) Then
'öffnen der ausgewählten Datei
Set WBQuelle = Workbooks.Open(ExportDatei)
With WBZiel
WBQuelle.Sheets(Array("QR-Zahlschein")).Copy After:=.Sheets(.Sheets.Count)
End With
WBQuelle.Close False
Set WBZiel = Nothing
Set WBQuelle = Nothing
Range("B5").Select
ActiveCell.FormulaR1C1 = "=Rechnung!R[5]C[2]"
ErrExit:
With Err
If .Number 0 Then
MsgBox "Fehler in Prozedur:" & vbTab & "'DatenHolen'" & vbLf & String(60, "_") & _
vbLf & vbLf & IIf(Erl, "Fehler in Zeile:" & vbTab & Erl & vbLf & vbLf, "") & _
"Fehlernummer:" & vbTab & .Number & vbLf & vbLf & "Beschreibung:" & vbTab & _
.Description & vbLf, vbExclamation + vbMsgBoxSetForeground, _
"VBA - Fehler in Prozedur - DatenHolen"
.Clear
End If
End With
End If
On Error GoTo 0
With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = lngCalc
.DisplayAlerts = True
.StatusBar = False
End With
End Sub