Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1896to1900
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Fehler 1004 in Prozedur

Fehler 1004 in Prozedur
19.09.2022 08:43:21
Benedikt
Guten Morgen zusammen
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

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fehler 1004 in Prozedur
19.09.2022 08:46:18
ChrisL
Hi
Wofür steht Array("QR-Zahlschein")?
cu
Chris
AW: Fehler 1004 in Prozedur
19.09.2022 10:29:40
Benedikt
Danke für deine Rückantwort
Wofür steht Array("QR-Zahlschein")? - Dies ist das Arbeitsblatt welches kopiert werden soll
AW: Fehler 1004 in Prozedur
19.09.2022 11:00:17
ChrisL
Hi
Sorry, das Array hat mich kurz irritiert. Ginge auch ohne, aber tut nichts zur Sache.
WBQuelle.Sheets("QR-Zahlschein").Copy
Vielleicht könntest du mal versuchen die Ziel-Mappe mit Namen anzusprechen. Bedingt, dass die Mappe geöffnet ist.
Set WBZiel = Workbooks("MeineZielMappe.xlsm")
cu
Chris
AW: Fehler 1004 in Prozedur
19.09.2022 11:12:08
ChrisL
Hi
Ist mir noch etwas aufgefallen. Die Referenzierung für die Formel...

        With WBZiel
WBQuelle.Sheets("QR-Zahlschein").Copy After:=.Sheets(.Sheets.Count)
.Range("B5").FormulaR1C1 = "=Rechnung!R[5]C[2]"
End With
cu
Chris
Anzeige
AW: Fehler 1004 in Prozedur
20.09.2022 12:54:50
Benedikt
Hallo Chris
Sorry das ich erst jetzt antworten kann, besten Dank für deine Bemühungen
Ja die Referenzierung für die Formel steht wirklich neben den Schuhen....
Mit der Zielmappe ist das eine für mich unlösbare Aufgabe:
Die Zielmappe ist eine Offerte aus welcher eine Rechnung generiert wird. Jede Datei hat also einen anderen Namen, d.h der Name der Zieldatei ist nicht bekannt.
Vielleicht weisst Du eine Lösung
AW: Fehler 1004 in Prozedur
20.09.2022 13:28:37
ChrisL
Hi
Man könnte
Set WBZiel = ThisWorkbook
durch
Set WBZiel = ActiveWorkbook
ersetzen.
Dies unter der Voraussetzung, dass die Ziel-Datei zum Zeitpunkt der Makroausführung aktiv ist.
Ansonsten müsste man für die Identifizierung alle offenen Dateien durchsuchen und ein eindeutiges Kriterium finden, welches die Ziel-Datei mit Zuverlässigkeit auszeichnet (z.B. ein bestimmter Blattname oder Text an vorbestimmter Stelle). Scheint mir aber ein wenig wackelig (z.B. was wenn mehrere potenzielle Zieldateien geöffnet sind).
Irgendwie ist alles ein wenig unkonventionell gestaltet bzw. ich blicke da nicht mehr ganz durch.
- Makrodatei ist geöffnet
- Zieldatei ist geöffent
- Makrodatei wird gestartet, welche die Vorlagedatei öffnet
(also insgesamt 3 Dateien - warum die Vorlage nicht gleich in die Makrodatei integrieren?)
cu
Chris
Anzeige
Herzlichen Dank
20.09.2022 20:54:23
Benedikt
Vielen Dank für deine Hilfe Chris
ActiveWorkbook hat geholfen, der Code läuft durch
AW: Fehler 1004 in Prozedur
19.09.2022 09:50:26
Luschi
Hallo Benedikt,

Ich sollte diesen Code aber aus einer anderen (geöffneten) Arbeitsmappe aufrufen können
- wenn das so ist, dann ist: Set WBZiel = ThisWorkbook
  definitiv falsch, denn Thisworkook zeigt immer auf die Arbeitsmappe in dem der Vba-Code
  ausgeführt wird
- ich nehme an, die andere geöffnete AM ist 1 AddIn
- dann mußt Du das Makro aus der Zieldatei per Application.Run(...) aufrufen und per
  Parameter  die Zieldatei mitgeben
Gruß von Luschi
aus klein-Üaris
Anzeige
AW: Fehler 1004 in Prozedur
19.09.2022 10:36:37
Benedikt
Vielen Dank für deine Hilfe
Ist zwar kein AddIn, aber das Problem wird schon bei This Workbook zu suchen sein.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige