Laufzeitfehler '1004':
23.01.2024 23:42:46
Kamochan
zu aller erst möchte ich mich einmal erwähnen, dass ich mich zwar recht gut in Excel auskenne, jedoch kompletter Neuling in VBA bin.
Ich habe mir zahlreiche Videos dazu angeschaut und habe bereits erste Schritte erfolgreich geschafft... (Naja aus meiner Sicht zumindest) :D.
Ich hoffe, das ich alle notwendigen Informationen hier erfasst habe und das mir wer pfiffiges weiter helfen kann.
Vielen Dank
Szenario:
Ich habe eine Datei, in dieser möchte ich via VBA Daten aus einer anderen Datei kopieren und einfügen.
Das ganze so, dass man es nicht alles sieht und mit Arbeitsblättern die geschützt sind und es danach auch wieder sein sollen.
Die Bereiche für die Kopierten Werte so wie die Range sind bekannt und ändern sich nicht.
Am Ende soll er mir das ganze noch mit einer Messagebox bestätigen.
Ergänzend: Das Löschen des Zwischenspeichers hatte ich nachträglich eingefügt, da ich vermutet habe, dass was im Zwischenspeicher blockt.
Mittlerweile vermute ich aber das es am Dateinamen liegt, dass dort noch was drin steht und er damit ein Problem hat (ist aber nur meine unwissende Vermutung)
Problem:
Mein gebasteltes Makro funktioniert zwar, jedoch bekomme ich bei jeder 2. Ausführung des Makros irgendwann einen Fehler.
Führe ich das Makro danach ein 3. mal aus, funktioniert es wieder. Eben nur jede 2. Ausführung nach einer erfolgreichen Ausführung nicht.
Fehler:
Laufzeitfehler '1004': Die PasteSpecial-Methode des Range-Objektes konnte nicht ausgeführt werden.
Leider konnte ich für meinen konkreten Fall keine Lösung finden, weshalb ich mich als Community Neuling an euch wende.
Makro:
Sub WochenImport()
Dim Dateiname As Variant
Dim wbQuelle As workbook
Dim LetzteZeile As Long
'ScreenUpdateing und PopUps deaktivieren
Application.ScreenUpdating = False
Application.DisplayAlerts = False
'Benutzer Datei auswählen lassen
Dateiname = Application.GetOpenFilename(FileFilter:="Excel-Dateien (*.xlsm),*.xlsm")
'Wurde eine Datei ausgewählt?
If Dateiname > False Then
LetzteZeile = ThisWorkbook.Worksheets(4).Cells(Rows.Count, 1).End(xlUp).Row
'Arbeitsmappe öffnen
Set wbQuelle = Workbooks.Open(Filename:=Dateiname)
'Daten kopieren
wbQuelle.Worksheets(4).Range("G1:H16").Copy
'Aktuelles Datenblatt entsperren
ThisWorkbook.Worksheets(4).Unprotect Password:="xxx"
'Daten einfügen
ThisWorkbook.Worksheets(4).Range("A" & LetzteZeile + 1).PasteSpecial xlPasteAll
'Lösche Inhalt des Zwischenspeichers
Application.CutCopyMode = False
'Aktuelles Datenblatt sperren
ThisWorkbook.Worksheets(4).Protect Password:="xxx"
'Arbeitsmappe schließen
wbQuelle.Close SaveChanges:=False
' Tabellenblatt wechseln
ThisWorkbook.Worksheets(3).Activate
'Nachrichtenfenster für erfolgreichen Import
MsgBox "Import erfolgreich beendet", vbInformation
Else
'Nachrichtenfenster für nicht erfolgten Import
MsgBox "Keine Datei ausgewählt.", vbExclamation
End If
'ScreenUpdateing und PopUps deaktivieren
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub