Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Kopie eines Makro speichert nicht

Forumthread: Kopie eines Makro speichert nicht

Kopie eines Makro speichert nicht
23.04.2026 14:03:09
Hans-Georg
Liebe wissende,

Ich habe ein Makro aus einer anderen Datei kopiert und in eine neue Datei eingefügt.
Dabei die Zellen für den Speichernamen natürlich angepasst.

Private Sub CommandButton3_Click()
'
Sheets("Rechnung").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=2, Collate:=True, _
IgnorePrintAreas:=False
Sheets("Ankauf-Verkauf").Select
Range("S11").Select

Dim strFileName As String
strFileName = "C:\MGD Recycling\Rechnungen\Ankauf-Verkauf\" & Range("HU3").Text & "\" & Range("X3").Value & ".pdf"

ThisWorkbook.Sheets("Rechnung").ExportAsFixedFormat Type:=xlTypePDF, Filename:=strFileName, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

End Sub

Das Makro läuft soweit durch und druckt die Rechnung 2 x aus.
Wenn es aber um das Speichern geht bekomme ich immer eine Fehlermeldung:

Laufzeitfehler 1004:
Anwendungs- oder objektdefinierter Fehler

Markiert wird dabei die letzte Zeile "ThisWorkbook.Sheets("Rechnung")

Das Makro läuft in der anderen Datei aber ohne Probleme durch.

Angepasst habe ich lediglich die Zelle ("HU3") - Dort steht das Datum drin "=Heute()" formatiert als "JJJJ"
und die Zelle ("X3") dort steht der Speichername drin.

Das Speicherverzeichnis lautet: C:\MGD Recycling\Rechnungen\Ankauf-Verkauf\2026 (Ordner sind bis zum Jahr 2030 erstellt)

Ich möchte gerne, dass die Folgedateien in den entsprechenden Jahresordner gespeichert werden

Was ich dabei nicht verstehe, warum läuft das Makro in der einen Datei und in dieser NICHT !?

Könnt ihr mir bitte helfen den Fehler zu finden !?

Vielen Dank

Hans-Georg
Anzeige

20
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Kopie eines Makro speichert nicht
23.04.2026 14:16:19
JoWE
Hallo Hans-Georg,
da waren wir doch schon mal oder?
Lade doch bitte endlich mal eine Beispielarbeitsmappe (gerne anonymisiert und mit wenigen Datensätzen) hoch.
Diese nervige Herumraterei mit Argumenten hin und wieder zurück bringt doch nichts!!!
Gruß
Jochen
AW: Kopie eines Makro speichert nicht
23.04.2026 15:16:07
Piet
Hallo

Ich habe deinen Recorder Code mal von Select befreit, es geht auch ohne Select.
Und um With Klammer erweitert. Der Punkt VOR Range("HU3") bezieht diese Zellen auf das Sheet Ankauf-Verkauf
Dabei fiel mir auf, das du einen Wert aus "X3" holst. den anderen Wert aber aus "HU3"
Frage: Kann es sein das der 2. Wert aus Zelle "H3" oder "U3" geholt werden muss??

mfg Piet

Const oPfad = "C:\MGD Recycling\Rechnungen\Ankauf-Verkauf\"

Private Sub CommandButton3_Click()
Dim strFileName As String

Sheets("Rechnung").PrintOut Copies:=2, Collate:=True, IgnorePrintAreas:=False
With Sheets("Ankauf-Verkauf")
strFileName = oPfad & .Range("HU3").Text & "\" & .Range("X3").Value & ".pdf"
MsgBox strFileName '** nur zum Testen
Sheets("Rechnung").ExportAsFixedFormat Type:=xlTypePDF, Filename:=strFileName, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
End With
End Sub
Anzeige
@Piet
23.04.2026 15:23:27
Hans-Georg
Moin
Dein Makro druckt 2 x dann wieder der Laufzeitfehler....1004

Markiert wird wieder die Letzte Zeile

Laufzeitfehler 1004:
Anwendungs- oder objektdefinierter Fehler
AW: Makro von Piet läuft durch, speichert aber nicht
23.04.2026 16:31:33
Hans-Georg
Das Makro von Piet läuft durch - 2 x ausdrucken - anzeigen einer Messagebox - klick auf OK - NIX

Speicherpfad kontrolliert ---- STIMMT ----

keine Ahnung was ich machen soll.....

MfG

Hans-Georg
Anzeige
AW: Makro von Piet läuft durch, speichert aber nicht
23.04.2026 16:57:25
Piet
Hallo Hans-Georg

auf Grund deiner Meldung habe ich den Code auf meinem PC praktisch geprüft.
Wenn der Ordner korrekt angegeben ist, wird bei mir eine PDF Datei darin gespeichert.

Gibt es einen Fehler den du vielleicht übersiehst. Bei Konto Nr. (Bank) gab es früher oft Zahlendreher.
Z.B. 13 statt 31, oder 17 statt 71. Hast du irgendeinen Fehler im Pfad der Ordner, den du übersiehst??

mfg Piet
Anzeige
AW: Makro von Piet läuft durch, speichert aber nicht
23.04.2026 17:59:26
Hans-Georg
Speicherort aus dem Windows Verzeichnis (Statusleiste) Kopiert:

C:\MGD Recycling\Rechnungen\Ankauf-Verkauf\2026

Demnach müsste die Datei wie folgt gespeichert werden:

C:\MGD Recycling\Rechnungen\Ankauf-Verkauf\2026\DATEINAME.PDF

geht aber nicht .....
AW: Makro von Piet läuft durch, speichert aber nicht
23.04.2026 19:24:05
Piet
Hallo Hans-Georg

Wenn du schon 2026 im Ordnerpfad drin stehen hast darfst du nicht noch mal "2026" aus Zelle HT3 als weiteren Ordner dranhängen!
Dann müsste der String FileName zum speichern so aussehen:
strFileName = "C:\MGD Recycling\Rechnungen\Ankauf-Verkauf\2026\" & Range("X3").Value & ".pdf"

mfg Piet
Anzeige
@Piet
24.04.2026 15:26:57
Hans-Georg
Sorry für die lange Pause, ich musste gestern meine Frau noch ins Krankenhaus bringen......

In diesem Post habe ich mich wohl falsch ausgedrückt....
Ich meinte, dass diese Ordner und der Jahresordner (in diesem Fall natürlich 2026) vorhanden sind.
Das Makro soll nach Möglichkeit den entsprechenden Jahresordner als Speicherort übernehmen. Heißt, alles aus diesem Jahr in 2026, im nächsten Jahr in 2027 usw.

Dazu holt sich das Makro aus der Zelle HU3 das entsprechende Jahr (Formel der Zelle =HEUTE() Format in der Zelle "JJJJ"
In der Zelle X3 befindet sich der Speichername unter der die Datei als PDF gespeichert werden soll

C:\MGD Recycling\Rechnungen\Ankauf-Verkauf\2026\DATEINAME.PDF



Warum wird mir immer wieder diese Zeile markiert angezeigt. Mit VBA habe ich es ja noch nicht ganz so aber wird hier nicht nur beschrieben welches Tabellenblatt (Rechnung) in welchem Format (PDF) der Speichername, die Qualität der PDF und die Seitenränder / nach dem druck öffnen gespeichert werden sollen ?

Sheets("Rechnung").ExportAsFixedFormat Type:=xlTypePDF, Filename:=strFileName, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

Den Speicherpfad habe ich schon mehrfach untersucht und KEINEN FEHLER gefunden !


Ich füge hier nochmal das ORIGINAL Makro ein welches ohne Probleme einwandfrei funktioniert

Private Sub CommandButton3_Click() (zufällig die selbe Buttonnummer)
'
Sheets("Rechnung").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=2, Collate:=True, _
IgnorePrintAreas:=False
Sheets("Recycling").Select
Range("D11").Select

Dim strFileName As String
strFileName = "C:\MGD Recycling\Rechnungen\Recycling\" & Range("HT3"). (Datum)Text & "\" & Range("W3")(Speichername).Value & ".pdf"

ThisWorkbook.Sheets("Rechnung").ExportAsFixedFormat Type:=xlTypePDF, Filename:=strFileName, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
End Sub


Die Kopie ist das hier:

Private Sub CommandButton3_Click()
'
Sheets("Rechnung").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=2, Collate:=True, _
IgnorePrintAreas:=False
Sheets("Ankauf-Verkauf").Select (hier ein anderes Tabellenblatt)
Range("S11").Select (hier eine andere Zelle)

Dim strFileName As String
strFileName = "C:\MGD Recycling\Rechnungen\Ankauf-Verkauf\(hier ein anderer Ordner)" & Range("HU3"). (hier eine andere Zelle)(Datum)Text & "\" & Range("X3")(hier eine andere Zelle).Value & ".pdf"

ThisWorkbook.Sheets("Rechnung").ExportAsFixedFormat Type:=xlTypePDF, Filename:=strFileName, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
End Sub

Diese Sachen habe ich geändert, sonst nichts !

Mir würde ja schon reichen, wenn das Makro korrekt als PDF gespeichert wird, dann würde ich einen PRINT Button selber erstellen.

Vielen Dank für deine / eure Mühe

Hans-Georg

Anzeige
AW: @Piet
24.04.2026 16:24:18
Piet
Hallo Hans-Georg

rein optisch kann ich bei deinem Code keinen Fehler feststellen. Ein großes Rätsel für mich?
Was passiert, wenn du die eine Seite bitte manuell von Hand als PDF speicherst und das speichern mit dem Makro Recorder aufzeichnest.
Manuell müsste es doch möglich sein diese eine Seite als PDF Datei zu speichern.

Eine andere Suchmöglichkeit als sich den aufgezeichneten Recorder Code ansehen, gibt es hier nicht.
Ich bin gespannt wie der Code aussieht. Wo der entscheidende Unterschied liegt.
Frage: Könnte es sein das beim Ordner "Ankauf-Verkauf" noch ein Space, " ", am Ende steht?
Oder das der Ordner so geschrieben ist: "Ankauf - Verkauf"? - Alles nur geraten!
Meine Erfahrung, wenn man hartnäckig genug sucht findet man irgendeinen dummen Fehler.
Ich warte mal deeine Recorder Aufzeichnung ab. Vielleicht erkennen wir dann den Fehler.?

mfg Piet
Anzeige
AW: @Piet
24.04.2026 21:34:39
Piet
Hallo Hans-Georg

bitte probiere es als letzen Versuch von meiner Seite mal mit diesem Code.
Sollte es funktionieren bitte nicht laut fragen warum? - Ich weiss es nicht!

Reine Erfahrung aus 25 Jahre Excel - manchmal akzeptiert Excel den Code wenn man über Variale geht!
Technisch erklären warum es dann funktioniert kann ich leider nicht. Nur Erfahrung durch viele Versuche.

mfg Piet

Private Sub CommandButton3_Click()

Dim strFileName As String, Jahr As Variant, Datei As String

'Sheets("Rechnung").PrintOut Copies:=2, Collate:=True, IgnorePrintAreas:=False
With Worksheets("Ankauf-Verkauf")
Jahr = CStr(.Range("HU3"))
Datei = .Range("X3").Value
strFileName = "C:\MGD Recycling\Rechnungen\Ankauf-Verkauf\" & Jahr & "\" & Datei & ".pdf"
Sheets("Rechnung").ExportAsFixedFormat Type:=xlTypePDF, Filename:=strFileName, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
End With
End Sub
Anzeige
AW: @Mit Makro Recorder
24.04.2026 17:29:42
Hans-Georg
Sub Makro_Recorder()
'
' Makro_Recorder Makro
'

'
Sheets("Rechnung").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=2, Collate:=True, _
IgnorePrintAreas:=False
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\MGD Recycling\Rechnungen\Ankauf-Verkauf\2026\ZZZZZ.pdf", Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
Application.Goto Reference:="Makro_Recorder"
End Sub

Am Ende habe ich vergessen in die Mappe "Ankauf-Verkauf" zu springen und die Zelle "S11" zu markieren.

Beim Speicherort und Speichernamen habe ich auch noch einmal ALLES KONTROLLIERT. Keine Leerzeichen gefunden.

Hans-Georg
Anzeige
AW: @Mit Makro Recorder
24.04.2026 18:38:00
JoWE
Hallo Hans-Georg,

in meiner Hard-/Software-Umgebung (PC mit Windows 11 und MS Office (laut Application.Version = 16.0)
läuft das in der angehängten Arbeitsmappe enthaltene Macro (ausgelöst über die Schaltfläche in der Tabelle "Rechnung")
korrekt durch. Inklusive 2-facher Ausdruck und Speichern im Ordner "C:\MGD Recycling\Rechnungen\Ankauf-Verkauf\2026\"
unter dem Dateinamen "Herr Hans-Georg Burmeister Müllerring 8 23669 Lübeck.pdf".
Hier die hochgeladene Datei: https://www.herber.de/bbs/user/180614.xlsm

Gruß
Jochen
Anzeige
AW: @Mit Makro Recorder
24.04.2026 19:45:04
Hans-Georg
Bei mir leider nicht.

Immer wieder die letzte Zeile.....

Lenovo Notebook - Windows 11 - 16 GB Arbeitsspeicher - 2 TB Festplatte - Office 2019

Komischerweise läuft genau der selbe Code - eben nur in den entsprechenden Speicherorten und Zellen angepasst - in drei anderen Dateien durch.

Ich habe insgesamt 4 Dateien - Schrotthandel - Recycling - Firmendaten - und Ankauf-Verkauf

In allen anderen Dateien funktioniert das Makro. Gibt es noch eine anderem Möglichkeit ??

Hans-Georg
Anzeige
AW: @Mit Makro Recorder
24.04.2026 20:47:58
JoWE
Vorschlag:
Lösch mal den gesamten Pfad (vorher natürlich alle enthaltenen Daten suchern!!!) und lege ihn danach neu an.
Danach lass das Makro nochmal laufen.
Gruß
Jochen
@JoWE
23.04.2026 14:29:05
Hans-Georg
Stimmt, da waren wir schon einmal bei was ich halt nicht verstehe, dass das kopierte Makro - Hier mal das ORIGINAL

Private Sub CommandButton3_Click()
'
Sheets("Rechnung").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=2, Collate:=True, _
IgnorePrintAreas:=False
Sheets("Altmetall").Select
Range("D11").Select

Dim strFileName As String
strFileName = "C:\MGD Recycling\Rechnungen\Altmetalle\" & Range("HT3").Text & "\" & Range("W3").Value & ".pdf"

ThisWorkbook.Sheets("Rechnung").ExportAsFixedFormat Type:=xlTypePDF, Filename:=strFileName, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
End Sub

Das funktioniert ja ohne Probleme, wird 2 gedruckt und das Tabellenblatt wird in den entsprechenden Ordner als PDF abgespeichert.
Funktionier in insgesamt 3 Dateien verschiedenen Dateien, alle Makros als Kopie.

Das neue Makro ist nur von den Speichernamen angepasst, wie in den andere Dateien auch...

Geht aber nicht. Mein VBA Level ist gleich null nur kopieren oder mit Recorder....
Langsam kann ich aber die Makros wenigstens lesen und einigermaßen verstehen.
Anzeige
Noch offen vergessen
23.04.2026 14:29:44
Hans-Georg
Noch offen vergessen
AW: @JoWE
23.04.2026 14:31:58
JoWE
Hans-Georg,
schön dass Du schnell reagierst!!
Aber eine Beispielarbeitsmappe hats Du noch immer nicht hochgeladen!!!
Gruß
Jochen
AW: Beispielmappe
23.04.2026 17:07:21
Piet
Hallo Hans-Georg

ich habe gerade deien Beispieldatei gefunden und denke ich habe den Fehler entdeckt!
Das Jahr 2026 steht bei dir bitte in Zelle "HT3" und nicht in der Zelle "HU3"! Bitte beachten!
Wenn das Jahr fehler erscheine dieser Pfad: - ohne Jahreszahl!
C:\MGD Recycling\Rechnungen\Ankauf-Verkauf\\Herr Hans-Georg Burmeister Müllerring 8 23669 Lübeck.pdf
Bitte prüfe das noch mal nach.

mfg Piet
Anzeige
AW: Beispielmappe
24.04.2026 15:35:31
Hans-Georg
Datum in der Beispielmappe (mal schnell gebastelt) ist in der Falschen Zelle HT3.

In der original Datei steht das Datum jedoch in der Zelle HU3.

Sorry für den Fehler
Anzeige
Anzeige
Live-Forum - Die aktuellen Beiträge
Datum
Titel
14.05.2026 13:31:09
14.05.2026 09:50:42
13.05.2026 19:14:18