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

Tabellenblatt als PDF speichern, der letzte Versuch

Forumthread: Tabellenblatt als PDF speichern, der letzte Versuch

Tabellenblatt als PDF speichern, der letzte Versuch
04.05.2026 15:14:39
Hans-Georg
Hallo Excel Freunde,

Ich habe mit eurer Hilfe zwei Makros, zum Versuch, in meiner Tabelle erstell, leider funktionieren diese nicht ganz so wie ich mir das wünsche.

Was ich möchte:
Das Makro soll das Tabellenblatt „Rechnung“ zweimal ausdrucken und das Tabellenblatt „Rechnung“ unter dem Ordnernamen aus Zelle „LM126“ und dem Speichernamen aus Zelle „DU93“ als PDF in folgendes Verzeichnis speichern.

C:\MGD Recycling\Rechnungen\Ankauf Schrott\2026

Wobei der Ordner „2026“ variabel sein sollte – dieses Jahr = „2026“, nächstes Jahr = „2027“ usw. (alle Ordner, bis 2035 sind vorhanden!)


MAKRO 1 sieht so aus:

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

Dim strFileName As String
strFileName = "C:\MGD Recycling\Rechnungen\Ankauf Schrott\)" & Range("LM126").Text & "\" & Range("DU93").Value & ".pdf"

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

End Sub

Die Fehlermeldung:
Das Makro läuft soweit durch und druckt die Datei zweimal aus. Dann kommt die Fehlermeldung „1004 Laufzeitfehler“. Es wird IMMER die letzte Zeile "ThisWorkbook.Sheets"des Makros als „falsch“ markiert!



Danach der zweite Versuch



MAKRO 2 sieht so aus:

Private Sub CommandButton3_Click()

Dim Datei As Variant, Pfad As String, Vorgabe As String, TB As Worksheet
Set TB = Sheets("Rechnung")
Pfad = "C:\MGD Recycling\Rechnungen\Ankauf Schrott\"
Vorgabe = "Name_Anpassen_" & Format(Date, "DD-MM-YYYY")

Datei = Application.GetSaveAsFilename( _
InitialFileName:=Pfad & Vorgabe & ".pdf", _
FileFilter:="PDF Dateien (*.pdf), *.pdf")

If Datei > False Then
TB.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=Datei
End If

End Sub


Der Fehler:
Eigentlich kein Fehler, sondern eher ein Problem mit dem Speichernamen.
Das Makro öffnet das Tabellenblatt „Rechnung“ und druckt es danach zweimal aus. Danach öffnet sich die Eingabeaufforderung zum Abspeichern als PDF. Im Speichernamen wird dann „Name_Anpassen_04.05.2026“ angezeigt.
Da der Speichername sehr lang sein kann, wäre ein automatischer Eintrag des Speichernamen sicher von Vorteil. Das man hier dann noch den Ordner zum speichern auswählen muss, ist das geringste Übel.



Wo steht was in der Tabelle?

In Zelle (LM126) steht das heutige Datum (Format „JJJJ“)
Zur Benutzung des Speicherortes (Ordner)

In Zelle (DU93) steht der Speichername für die PDF
3552 - 46146 - 1 - Firma - MKV Rostocker Maschinenbau GmbH – Werftstrasse 26 – 18059 Rostock

Der Speichername wird mit „Verketten“ aus verschiedenen Zellen zusammengesetzt und in Zelle (DU93) angezeigt.

Speichername setzt sich zusammen aus:
Kundennummer – heutiges Datum (Formatiert als Zahl) – Tagesnummer der Rechnung - Anrede – Kundenname und Adresse

Ich hoffe, dass euch vom vielen lesen nicht schwindelig geworden ist, aber ich denke mal, eine ordentliche, ausführliche Erklärung ist immer hilfreich.
Vielen Dank für eure Mühe

Hans-Georg
Anzeige

52
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabellenblatt als PDF speichern, der letzte Versuch
04.05.2026 16:19:45
Onur
Bitte bei sowas immer eine Beispielsdatei posten, da Niemand Lust hat, sich eine Datei zu basteln und deinen Code einzufügen, nur um dir helfen zu können.
Ohne Testen geht es nun mal nicht, wenn man sowas gründliche machen will.
AW: Tabellenblatt als PDF speichern, der letzte Versuch
04.05.2026 16:56:25
MCO
Mahlzeit, Hans-Georg!

Die 2 Blätter konnte ich auch noch selbst anlegen.

Dein Makro 1 hab ich etwas umgebaut, überflüssiges raus und ne Dateiprüfung mit reingenommen. Ich vermute nämlich (und das kann uns auch eine Beispieldatei nicht beweisen), dass dein Pfad nicht in Ordnung ist und damit die pdf nicht erstellt werden kann.

Probier mal dieses Makro:


Private Sub CommandButton3_Click()
Dim Rchn_sht As Worksheet

'Sheets("Altmetalle").Select 'überflüssig
'Range("F16").Select 'überflüssig

Dim strFileName As String
Pfad = "C:\MGD Recycling\Rechnungen\Ankauf Schrott\)" & Format(Date, "yyyy") ' Jahreszahl direkt vom Tagesdatum abgeleitet

If Dir(Pfad, vbDirectory) = "" Then 'erst prüfen, dann drucken + pdf
MsgBox Pfad & " existiert nicht, bitte prüfen!", vbCritical + vbOKOnly
Exit Sub
End If

Set Rchn_sht = Sheets("Rechnung")
Rchn_sht.PrintOut Copies:=2, Collate:=True, IgnorePrintAreas:=False

Datei = Sheets("Altmetalle").Range("DU93").Value & ".pdf"
strFileName = Pfad & "\" & Datei
Rchn_sht.ExportAsFixedFormat xlTypePDF, strFileName, , , , , , 0

End Sub


Gruß, MCO
Anzeige
@ MCO
04.05.2026 22:19:19
Hans-Georg
Hallo MCO,
vielen Dank für das Makro,
Ich werde es später testen, weil ich heute leider keine Zeit mehr dazu habe.

Nochmal vielen Dank für deine Hilfe

Mit freundlichem Gruß

Hans-Georg
AW: Tabellenblatt als PDF speichern, der letzte Versuch
05.05.2026 17:41:13
Hans-Georg
Hallo MCO,

Mein erster Fehler war zu glauben, dass ich drei Dateien gleichzeitig bearbeiten kann. Schande auf mein Haupt !!

Dein Makro läuft durch bis zur Message Box, die mir sagt, der Speicherpfad existiert nicht.

Hier nochmal der "neue" angepasste Pfad. Neu deshalb, um zwei Worte und Leerzeichen zu verhindern oder möglichst zu reduzieren.

C:\MGD Recycling\Rechnungen\Schrott\

Weiter als bis zur Message Box komme ich leider nicht, mein VBA Wissen gleicht meinem Wissen über Fußball oder Quantenphysik = 0

Eventuell sind meine Erwartungen ja auch zu hoch oder nicht umsetzbar.
Ich möchte die Datei nur so Bedienerfreundlich machen wie es geht, um wie in den letzten Jahren hunderte von Fehlbuchungen zu vermeiden !

Vielen Dank für deine Mühe

Hans-Georg
Anzeige
AW: Tabellenblatt als PDF speichern, der letzte Versuch
05.05.2026 18:29:56
schauan
... also, irgendwo muss da was sein, was nicht übereinstimmt.
1)
Teste das doch einfach der Reihe nach, also
Sub Test1()

Pfad = "C:\MGD Recycling"
If Dir(Pfad, vbDirectory) = "" Then 'erst prüfen, dann drucken + pdf
MsgBox Pfad & " existiert nicht, bitte prüfen!", vbCritical + vbOKOnly
Else
MsgBox Pfad & " OK"
End If
Pfad = "C:\MGD Recycling\Rechnungen"
If Dir(Pfad, vbDirectory) = "" Then 'erst prüfen, dann drucken + pdf
MsgBox Pfad & " existiert nicht, bitte prüfen!", vbCritical + vbOKOnly
Else
MsgBox Pfad & " OK"
End If
Pfad = "C:\MGD Recycling\Rechnungen\Ankauf Schrott"
If Dir(Pfad, vbDirectory) = "" Then 'erst prüfen, dann drucken + pdf
MsgBox Pfad & " existiert nicht, bitte prüfen!", vbCritical + vbOKOnly
Else
MsgBox Pfad & " OK"
End If
Pfad = "C:\MGD Recycling\Rechnungen\Ankauf Schrott\" & Format(Date, "yyyy")
If Dir(Pfad, vbDirectory) = "" Then 'erst prüfen, dann drucken + pdf
MsgBox Pfad & " existiert nicht, bitte prüfen!", vbCritical + vbOKOnly
Else
MsgBox Pfad & " OK"
End If
End Sub

2)
Lege eine Datei in das Verzeichnis ...2026 und gib das aus:
Sub Test2()

Pfad = "C:\MGD Recycling\Rechnungen\Ankauf Schrott\" & Format(Date, "yyyy")
MsgBox ThisWorkbook.Path & vblf & Pfad
End Sub

Da siehst Du beides untereinender und eventuelle Abweichungen schneller ...
Anzeige
@ schauan Testmakro läuft durch !
05.05.2026 19:56:37
Hans-Georg
Hallo schauan,
Das Makro läuft, nachdem ich meine Fehler korrigiert habe ohne Probleme bis zum Ende durch

Sub Test1()
Pfad = "C:\MGD Recycling"
If Dir(Pfad, vbDirectory) = "" Then 'erst prüfen, dann drucken + pdf
MsgBox Pfad & " existiert nicht, bitte prüfen!", vbCritical + vbOKOnly
Else
MsgBox Pfad & " OK"
End If
Pfad = "C:\MGD Recycling\Rechnungen"
If Dir(Pfad, vbDirectory) = "" Then 'erst prüfen, dann drucken + pdf
MsgBox Pfad & " existiert nicht, bitte prüfen!", vbCritical + vbOKOnly
Else
MsgBox Pfad & " OK"
End If
Pfad = "C:\MGD Recycling\Rechnungen\Schrott"
If Dir(Pfad, vbDirectory) = "" Then 'erst prüfen, dann drucken + pdf
MsgBox Pfad & " existiert nicht, bitte prüfen!", vbCritical + vbOKOnly
Else
MsgBox Pfad & " OK"
End If
Pfad = "C:\MGD Recycling\Rechnungen\Schrott\" & Format(Date, "yyyy")
If Dir(Pfad, vbDirectory) = "" Then 'erst prüfen, dann drucken + pdf
MsgBox Pfad & " existiert nicht, bitte prüfen!", vbCritical + vbOKOnly
Else
MsgBox Pfad & " OK"
End If
End Sub
Anzeige
AW: @ schauan Testmakro läuft durch !
06.05.2026 00:22:34
schauan
Das Makro läuft, nachdem ich meine Fehler korrigiert habe ohne Probleme bis zum Ende durch

Da wäre die Frage also gelöst, ;-)
AW: Tabellenblatt als PDF speichern, der letzte Versuch
04.05.2026 17:21:31
Herbert Grom
Hallo Hans-Georg,

vielleicht liegt es daran, dass ein Kundenname o. ä. ein nicht druckbares Zeichen enthält, z. B. den "/" oder den "\" etc.

Servus
Anzeige
@ Herbert Grom
04.05.2026 22:16:59
Hans-Georg
Hallo Herbert,
vielen Dank für deinen Tipp.

Die in meiner Frage angegebenen Speicherorte und Speichernamen habe ich ALS PFAD von Windows 11 übernommen.
Mir sind dabei keine Fehler aufgefallen.

Ich wollte anfangs mal ein "/" in einen Speichernamen einsetzen, hab dann aber schnell gemerkt, dass die Datei sich deswegen nicht speichern lässt.

Nochmal, vielen Dank für deine Hilfe.

Mit freundlichem Gruß

Hans-Georg
Anzeige
AW: Tabellenblatt als PDF speichern, der letzte Versuch
04.05.2026 20:13:52
JoWE
Hallo Hans-Georg,
das ständige Verändern der Zellen in Deinen Beiträgen, die dann das Jahr bzw. den Dateinamen enthalten
empfinde ich als sehr seltsam, denn im letzten Beispiel lauteten die Zellen noch "HU3" und "X3" (was soll das???)

Nichtsdestotrotz, das folgende Makro (mit den neuen Zellbezeichnungen) funktioniert tadellos ohne Fehlermeldungen:
'*************************************************************************************************************
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("LM126").Text & "\" & .Range("DU93").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
'*************************************************************************************************************
Gruß
Jochen
Anzeige
AW: Tabellenblatt als PDF speichern, der letzte Versuch
05.05.2026 02:49:45
xlKing
Hi,
Warum ist in deinem ersten Beispiel im Pfad eine schließende Klammer? Die gehört da sicher nicht hin. Den Ordner )2026 gibt es sicher nicht, womit das Makro den Fehler verursacht.

strFileName = "C:\MGD Recycling\Rechnungen\Ankauf Schrott\)" & Range("LM126").Text & "\" & Range("DU93").Value & ".pdf"

Die Klammer muss bestimmt raus, oder?

Mr. K.
Anzeige
Beispielmappe mit ausführlicher Erklärung
06.05.2026 02:10:42
Hans-Georg
https://www.herber.de/bbs/user/180677.xlsx

Hallo,
in dieser Mappe sind alle aktuellen Daten aus nur EINER DATEI.

Keine falschen Zellbezüge mehr (die habe ich fünfmal überprüft)
Keine falschen Bezeichnungen mehr (auch das habe ich mehrfach überprüft)

Außerdem:
Eine ausführliche Beschreibung des Problems und meine Herangehensweise.

Ich hoffe, das Forum hat mich noch nicht aufgegeben

Vielen Dank an alle Teilnehmer, ich weiß eure Mühen wirklich zu schätzen !!

Mit freundlichem Gruß

Hans-Georg

PS: Der Server Herber.de und auch einige andere war von 22:00 Uhr bis 0:03 Uhr nicht erreichbar. Wartungsarbeiten? Oder macht das Internet jetzt Pausen? LOL
Anzeige
AW: Upload hat nicht geklappt, was ist da los ?
06.05.2026 02:45:50
Uduuh
Hallo,
In der Zelle "LM126" steht ein Datum "2026" ; Formel der Zelle =Heute() ; Format der Zelle "JJJJ"
Dann steht da aktuell 46148!!!! Den Ordner C:\MGD Recycling\Rechnungen\Schrott\46148 gibt's wohl nicht.
Schreib in die Zelle =Jahr(Heute()). Dann ist's auch 2026.

Das Format einer Zelle hat wenig mit dem Inhalt zu tun.

Gruß aus'm Pott
Udo
Anzeige
AW: Upload hat nicht geklappt, was ist da los ?
06.05.2026 13:10:16
JoWE
Hans-Georg,
in den vorherigen Postings lautete der Verzeichnisname stets:
"C:\MGD Recycling\Rechnungen\Ankauf-Verkauf\" dazu kommt dann noch die Jahreszahl; hier also 2026.
In der zuletzt hochgeladenen Arbeitsmappe (180677.xlsx - leider ohne das Makro!!!) steht der
Speicherpfad (Fotos vom Explorer) jetzt aber plötzlich anders (???), nämlich so (das fett gedruckte)???
"C:\MGD Recycling\Rechnungen\Ankauf-Verkauf Rechnungen\" dazu kommt dann noch die Jahreszahl; hier also 2026.
Was ist denn jetzt korrekt?
Gruß
Jochen
Anzeige
@ JoWe - AW: Speicherpfad
07.05.2026 16:11:02
Hans-Georg
Hallo JoWE

Die Datei https://www.herber.de/bbs/user/180678.xlsx dient lediglich zur Veranschaulichung meiner Datei, die Mappe enthält Keine Formeln und Keine Makros.
Ein hochladen der kompletten Datei, sieht mein Chef wohl als "Vertrauensbruch" an - (Datenschutz). Eine einfache Beispielmappe ist auch nicht unbedingt erforderlich, da es sich wohl lediglich um zwei "Zellen" handelt, die hier eine Rolle spielen. Rein theoretisch könnte man aus A1 und A2 nehmen.

In Zelle "LM126" (Datum) habe ich ein Datum eingefügt, einfach nur im glauben daran, man würde es brachen um einen flexiblen Speicherort angeben zu können.
Da mein VBA Wissen noch sehr, sehr bescheiden ist, kann ich mir nicht vorstellen, dass dieses über VBA möglich ist.

Der Speicherpfad wurde angepasst, weil ich es einfacher gestallten und Leerzeichen vermeiden wollte. Da ich in meinem jugendlichem Leichtsinn (ich bin 63 Jahre alt) glaubte, drei Dateien gleichzeitig bearbeiten zu können, spielte sicher dann auch die Unübersichtlichkeit eine große Rolle.

Nun steht der Speicherort für DIESE DATEI endgültig fest:

C:\MGD Recycling\Rechnungen\Schrott\2026 wobei der hier in FETT dargestellter Ordner variabel sein muss (2026 - 2027 - 2028 usw.)

Der Speichername aus Zelle "DU93" wird in Zelle "LL124" mit Hilfe von "VERKETTEN" erstellt und an "DU93" übergeben.

Schau dir bitte nochmal die Datei https://www.herber.de/bbs/user/180678.xlsx genau an. Dort sieht man meine "Eingabemaske", die ich für den Bediener möglichst einfach gehalten habe.

Eventuell gibt es hier auch einige Vorschläge zur Verbesserung.

Mit freundlichem Gruß

Hans-Georg
Anzeige
AW: @ JoWe - AW: Speicherpfad
07.05.2026 16:20:04
Hans-Georg
.
AW: @ JoWe - AW: Speicherpfad
07.05.2026 16:55:23
JoWE
habe Dir eine Email mit zwei Anhängen an
mgd@mgd-recycling.de
gesandt
AW: @ JoWE - Danke für die E-Mail mwT.
07.05.2026 17:28:42
Hans-Georg
Hallo JoWE,
du kannst es ja nicht wissen, aber ich sitze zuhause (krank) und arbeite für die Firma die Tabellen aus.
Mein Boss meint, wenn ich nicht im Büro anwesend sein kann, um zu arbeiten, sollte ich wenigstens zuhause was zu tun haben (LOL)

Nein, ganz so schlimm ist der Boss auch nicht, war nur als Witz gemeint.

E-Mails an MGD@MGD-Recycling.de kann ich hier leider nicht abrufen, aber ich habe meine Kollegin gebeten, mir die E-Mail weiterzuleiten.

Ich bin hier unter meiner E-Mail hgburmeister.hl@t-online.de zu erreichen.

Vielen Dank für deine Hilfe

Hans-Georg
Anzeige
AW: @ JoWE - Danke für die E-Mail mwT.
07.05.2026 18:32:00
JoWE
Dann mal gute Besserung, ich bin übrigens 72 Jahre alt
Aufrichtige Entschuldigung an alle Teilnehmer
07.05.2026 18:48:02
Hans-Georg
Vielen Dank für eure Hinweise und ja "SCHANDE ÜBER MEIN HAUPT".

Ich will hier niemanden verärgern, weil ich manchmal falsche angeben gemacht habe oder aus Unwissenheit falsch gehandelt habe.

1. Ich habe geglaubt, man kann drei Dateien gleichzeitig bearbeiten um Zeit zu sparen. Daher dann auch die verwirrenden Angaben von "Zellen" und "Speicherorten"

2. Meine "Beispielmappe" war so gesehen kein Beispiel. Da habe ich nur zur besseren Ansicht einige Bilder eingebaut und nicht darauf hingewiesen, dass die Mappe keine Formeln und Keine Makros enthält.

3. Das ständige hin und her der Zellbezüge und Speicherwege war keine Absicht - wie schon unter Punkt 1 beschrieben - wollte ich es nur möglichst einfach halten und habe z. B. den Pfad mehrfach angepasst.

4. Zelle "LM126" DATUM: Ich dachte, dass man, um den letzten Ordner im Speicherpfad "dynamisch" halten zu können, ein Datum bzw. ein Jahr benötigt. Wenn man das mit VBA hinbekommt und diese Angabe nicht braucht - sei es bitte meiner Unwissenheit geschuldet - zwischenzeitlich habe ich auch gelernt, dass ein Zelleninhalt oder die Formatierung der Zelle für VBA wohl so überhaupt keine Rolle spielt.

5. Das betrifft auch die Zelle "DU93". Ich kann mir nicht vorstellen, dass das was in Zelle "DU93" zu sehen ist, nicht als Speichername geeignet ist. Der Wert wird zwar in Zelle "LL124" mit Hilfe von "VERKETTEN" erstellt und anschließend an "DU93" ausgegeben (Formel ist: =LL124)

6. Plötzlich keiner mehr da ?
Das ich mich längere Zeit nicht gemeldet habe/konnte, kann keiner von euch wissen. Das ist mir schon klar. Tatsache ist, dass ich aus gesundheitlichen Gründen eventuell GANZ KURZFRISTIG ausfallen kann und mich schnell in das nächste Krankenhaus begeben muss. Dort ist dann auch niemals klar, ob es nur ambulant oder stationär behandelt werden muss.

7. Versuchen / Ausprobieren von Makros.
Ich versuche immer die vorgeschlagenen Makros so schnell wie möglich auszuprobieren, leider habe ich erst spät erkannt, eine NEUE DATEI dafür zu nutzen und nicht unbedingt die Datei in der das Makro erst später dazu eingefügt werden kann.

8. Rückmeldung / Erfolge
Natürlich möchte jeder Antworter schnell über seinen Vorschlag eine Antwort erhalten, kann ich gut nachvollziehen. Teilweise bin ich aber nach einiger Zeit am Rechner schon stark erschöpft und kann den Umfangreichen verschiedenen Antwortern nicht mehr folgen, so dass ich mich lieber von PC zurückziehe und eine Pause einlegen muss.

9. Fehlt noch was ?
Ja, natürlich möchte ich mich auf das tiefste für das Durcheinander entschuldigen. Alles was bisher geschehen ist, wurde von mir, aus "mehr oder weniger" Unwissenheit verschuldet und verdient eure Missachtung für mich.
Ich weiß genau, wie frustrierend es sein kann immer und immer wieder falsche Informationen zu bekommen. Ich gelobe BESSERUNG !

Zum Schluss.
Wenn ein Makro die Datei zweimal druckt, dann aber nicht als PDF speichert, kann es sein, dass mir noch irgendein Programm dafür fehlt ?

Dieses Makro von JoWe läuft zwar durch, druckt die Rechnung zweimal aus aber dann kommt die Fehlermeldung
"Laufzeitfehler 9: Index außerhalb des gültigen Bereichs"

Markiert wird von VBA die folgende Zeile:
Sheets("Rechnung").ExportAsFixedFormat 0, _
"C:\MGD Recycling\Rechnungen\Schrott\" & _
CStr(Year(Date)) & "\" & Sheets("Ankauf-Verkauf").Range("DU93")


Das Makro: von JoWe sieht so aus:

Option Explicit

Private Sub CommandButton8_Click()
Sheets("Rechnung").PrintOut , , 2
Sheets("Rechnung").ExportAsFixedFormat 0, _
"C:\MGD Recycling\Rechnungen\Schrott\" & _
CStr(Year(Date)) & "\" & Sheets("Ankauf-Verkauf").Range("DU93")

End Sub

Nochmals vielen Dank für eure Hilfe, ohne euch würde ich es nicht schaffen.
Mit freundlichem Gruß
Hans-Georg
Anzeige
AW: Das Makro verursacht in meiner Umgebung keinen Fehler!!!
07.05.2026 18:50:27
JoWE
ALLES OK - ..... verursacht in meiner Umgebung keinen Fehler
07.05.2026 18:59:41
Hans-Georg
Hallo JoWE,
ich hab mir das nochmal angeschaut, und du hast natürlich Recht.

Ich brauchte die Zeile CStr(Year(Date)) & "\" & Sheets("Ankauf-Verkauf").Range("DU93") nur auf CStr(Year(Date)) & "\" & Sheets("Altmetall").Range("DU93") ändern und siehe da...

ES GEHT - Man, was für eine schwere Geburt...

VIELEN DANK und nochmal 1000x Dankeschön oben drauf !

Hans-Georg
Anzeige
Noch offen vergessen
07.05.2026 18:50:32
Hans-Georg
..
Problem ist wohl gelöst - Vielen Dank für eure Hilfe owT.
07.05.2026 19:01:08
Hans-Georg
.
AW: Upload hat nicht geklappt, was ist da los ?
06.05.2026 03:32:21
Hans-Georg
Moin Uduuh,
Leider falsch,
Ich habe gerade noch einmal nachgeschaut....

In Zelle "LM126" steht die Formel = HEUTE() - Format = Benutzerdefiniert "JJJJ" - dann steht da "2026"
Ich dachte, dass man zum variablen Speichern der Datei ein Datum benötigt. deshalb habe ich das gemacht.

Die Zahl, die du meinst steht in Zelle "LM121" Formel =HEUTE() Format = ZAHL (ohne Nachkommastellen), dann steht da "46184"
Diese Zahl ändert sich ja jeden Tag aufs neue - nun braucht man nur noch eine individuelle Tagesnummer. Dazu habe ich ein Drehfeld erstellt, womit man die Zahl einstellen kann.

3552 - 46184 - 1 - Firma - Müller und Co. Kg - Am Sandberg 122 - 13922 Zuhause So sieht der Speichername aus.

Kundennummer - Tageszahl - Tagesnummer - Anrede - Vor- & Nachname - Straße & H. Nr. - PLZ & Ort So ist der Speichername aufgebaut.

Wie ich schon sagte VBA ist nicht meine Welt, noch nicht, ich lerne gerne jeden Tag dazu !


Anzeige
leider falsch
06.05.2026 13:23:15
Uduuh
Hallo,
In Zelle "LM126" steht die Formel = HEUTE() - Format = Benutzerdefiniert "JJJJ" - dann steht da "2026"
Dann steht da eben nicht 2026. Das sieht nur so aus. Wie ich schon geschrieben habe, hat das Format einer Zelle wenig mit dem Inhalt zu tun.
Formatiere mal irgendeine Zelle als "JJJJ" und schreibe eine beliebige Zahl von 1 - 99999 rein. Siehe und staune. Das hat auch nichts mit VBA zu tun.

Gruß aus'm Pott
Udo
Anzeige
AW: Upload hat nicht geklappt, was ist da los ?
06.05.2026 15:54:52
schauan
... Du hast doch schon mit Format programmiert ... Hast Du das nun einfach weggelassen? Mit Format(....,"yyyy")geht es, auch wenn da die Zahl steht. Mal abgesehen davon, dass mir das was da hinten gemacht wird (oder auch nicht, wie man in Deiner Beispieldatei feststellen muss) irgendwie seltsam erscheint :-(
Anzeige
AW: leider falsch
06.05.2026 15:44:17
schauan
... Spalte LM ist komplett leer ! (Datei 180678)
@ Uduuh - AW: leider falsch - Du hast natürlich Recht -owT
07.05.2026 16:18:36
Hans-Georg
.
AW: leider falsch
06.05.2026 15:46:53
schauan
... Spalte DU ist komplett leer ! (Datei 180678)
Anzeige
AW: leider falsch
06.05.2026 15:48:03
schauan
... Spalte LL ist komplett leer ! (Datei 180678)
@ schauan Das ist ja auch nur eine Datei zum Ansehen
07.05.2026 15:41:38
Hans-Georg
Hallo schauan,
natürlich sind die Zeilen komplett leer, das ist ja auch nur eine Mappe zur Erklärung und nicht meine Datei.

Ich glaube, wenn ich die Datei hochladen würde, wäre mein Chef bis auf's tiefste beleidigt. (Datenschutz)

Wie in der Datei beschrieben, brauchen wir nur etwas mehr "Einfachheit" zum Dateivorgänger "Felder, die unbedingt ausgefüllt werden müssen habe ich so gemacht, dass man eine "Eingabepflicht" nur ignorieren aber - nicht übersehen kann."

Wie ich schon mehrfach erklärt habe gibt es eigentlich nur zwei Zellen von denen ich dachte, sie wären für ein Makro UNBEDINGT erforderlich.

Zelle "LM126" enthält das Datum - für mich sichtbar als - 2026 - ob das nun so richtig ist oder nicht, weiß ich natürlich nicht.
Siehe meine Einschätzung im Erfahrungslevel des Fragestellers : Kaum Excel/VBA-Kentnisse
Der ganze Grund für die Zelle "LM126" ist der, dass ich dachte, man braucht das, damit das Jahr flexibel angelegt ist. Eben für 2026 - 2027 - 2028 usw.

Zelle "DU93", dort steht lediglich der "Speichername" der Datei.

3552 - 46143 - 1 (bis 150 möglich) - Anrede - Name und Adresse
Kundennummer - Quittungsnummer - Tagesquittungsnummer: - Herr/Frau/Firma usw. - Straße & Hausnummer
Kommt aus ACCES - Tag ab 01.01.1900: - Zählt nur die Tagesquittungen: - Bei Firmen gibt es andere Rechnungstexte - PLZ & Ort

Ich hatte vor einigen Jahren mit eurer Hilfe ein ähnliches Makro erstellt, das habe ich aus der alten Datei übernommen und den Verzeichnispad lediglich auf die neuen Anforderungen angepasst.
Das ganze hatte dann auch so 15 bis 20 x geklappt, bis ich irgendwann immer wieder eine Fehlermeldung erhalten habe.

Meine Anforderungen an das Makro, sollen gering sein um einen hohen Arbeitsaufwand für den VBA Programmierer möglichst klein zu halten.

Was ich gerne möchte:
Das Tabellenblatt "Rechnung" zweimal ausdrucken. (einmal für den Kunden, einmal für unsere Unterlagen)
Anschließend das Tabellenblatt "Rechnung" in den (variablen Jahresordner) (2026 - 2027 - 2028 usw.) als PDF abspeichern.
Danach wäre ein Wechsel in das Tabellenblatt "Altmetalle" zur Zelle "F16" (Kundennummer) hilfreich um einen neuen Kunden bedienen zu können.

Ich hoffe, dass ich mich verständlich genug ausgedrückt habe.

Mit freundlichem Gruß

Hans-Georg

Anzeige
AW: @ schauan Das ist ja auch nur eine Datei zum Ansehen
07.05.2026 17:22:43
schauan
Hallo Hans-Georg,

also erst mal, wenn Du was als Beispiel machen willst, dann mache es so kompakt und genau wie möglich.

Zum Testen muss Dein Jahr nicht irgendwo in LM oder wo auch immer stehen und Du musst auch keinen damit verwirren, dass Du schreibst, da steht irgendwo was, was gar nicht stimmt. Man könnte auch was in XFD1048576 beschreiben ... Findet man eventuell schneller als LM126 - in Deiner Datei STRG+Pfeil runter, Pfeil rechts ... Das die genannten Zellen nix enthalten können, findet man noch schneller raus ;-) (STRG+Ende) Die 3 Antworten dass in LL,LM,DU nix steht waren nur als auffälligerer Hinweis gedacht - zuviel input ...

Das Datum kann man auch in A1 berechnen.
Auch der Pfad kann vorne berechnet werden - oder eben im Code...

Da können dann eben auch die Formeln drin sein, wie Du was zusammensetzt und da kann man schauen, wo es vieleicht in den Formeln klemmt.
Du brauchst auch keinen realistischen Pfad zu nehmen, auch unter c:\test\irgendwo\irgendwer\irgendwie\2026 kannst Du schauen, ob alles passt ... und tust Deinem Chef nicht weh. Wichtig ist halt, dass das Prinzip erkennbar ist. Wenn Du per Formel den Pfd zusammen baust, ob da alle Schrägstriche sind oder was auch immer.

Und vor allem, nimm in dem Fall keine Bilder.
Man kann sowohl die Beschreibung als auch Bilder hier direkt posten. Ich weiß nicht, wozu ich eine Exceldatei mit Bildern nehmen soll, mal abgesehen davon, dass die mE. eher nix zur Lösung beitragen. Dass der Speicherpfad nicht stimmt kann man schreiben ...

Mit Deiner Antwort und Beschreibung weiß ich auch nicht so genau, wo es lang geht. Du schreibst

3552 - 46143 - 1 (bis 150 möglich) - Anrede - Name und Adresse
Kundennummer - Quittungsnummer - Tagesquittungsnummer: - Herr/Frau/Firma usw. - Straße & Hausnummer
Kommt aus ACCES - Tag ab 01.01.1900: - Zählt nur die Tagesquittungen


... das bedeutet, dass die 46143 aus Access kommt und genau genommen nichts mit HEUTE() zu tun hat?
Ich weiß nun nicht, ob das Jahr immer noch ein Problem ist? Du hattest doch geschrieben, dass mein Testmakro durchgelaufen ist...

Zweimal ausdrucken kann man aufzeichnen, Ist dann zwar kein Profi-Code, sollte aber funktionieren. Du rufst das Makro dann nur noch auf. Entweder weist Du es einem Button zu oder schreibst den Makroaufruf ans Ende von dem anderen. Erst speichern und dann Drucken ist vielleicht besser - oder auch nicht.

https://www.clever-excel-forum.de/Thread-Excel-Word-Makrorekorder?pid=160743#pid160743

bea dort meine Hinweise - Bevor man mit der Aufzeichnung beginnt ...

Ebenso den Wechsel auf das Blatt ... nach F16.



Anzeige
@alle Teilne. ausführliche Entschuldigung und korrekte Daten
07.05.2026 18:39:13
Hans-Georg
Vielen Dank für eure Hinweise und ja "SCHANDE ÜBER MEIN HAUPT".

Ich will hier niemanden verärgern, weil ich manchmal falsche angeben gemacht habe oder aus Unwissenheit falsch gehandelt habe.

1. Ich habe geglaubt, man kann drei Dateien gleichzeitig bearbeiten um Zeit zu sparen. Daher dann auch die verwirrenden Angaben von "Zellen" und "Speicherorten"

2. Meine "Beispielmappe" war so gesehen kein Beispiel. Da habe ich nur zur besseren Ansicht einige Bilder eingebaut und nicht darauf hingewiesen, dass die Mappe keine Formeln und Keine Makros enthält.

3. Das ständige hin und her der Zellbezüge und Speicherwege war keine Absicht - wie schon unter Punkt 1 beschrieben - wollte ich es nur möglichst einfach halten und habe z. B. den Pfad mehrfach angepasst.

4. Zelle "LM126" DATUM: Ich dachte, dass man, um den letzten Ordner im Speicherpfad "dynamisch" halten zu können, ein Datum bzw. ein Jahr benötigt. Wenn man das mit VBA hinbekommt und diese Angabe nicht braucht - sei es bitte meiner Unwissenheit geschuldet - zwischenzeitlich habe ich auch gelernt, dass ein Zelleninhalt oder die Formatierung der Zelle für VBA wohl so überhaupt keine Rolle spielt.

5. Das betrifft auch die Zelle "DU93". Ich kann mir nicht vorstellen, dass das was in Zelle "DU93" zu sehen ist, nicht als Speichername geeignet ist. Der Wert wird zwar in Zelle "LL124" mit Hilfe von "VERKETTEN" erstellt und anschließend an "DU93" ausgegeben (Formel ist: =LL124)

6. Plötzlich keiner mehr da ?
Das ich mich längere Zeit nicht gemeldet habe/konnte, kann keiner von euch wissen. Das ist mir schon klar. Tatsache ist, dass ich aus gesundheitlichen Gründen eventuell GANZ KURZFRISTIG ausfallen kann und mich schnell in das nächste Krankenhaus begeben muss. Dort ist dann auch niemals klar, ob es nur ambulant oder stationär behandelt werden muss.

7. Versuchen / Ausprobieren von Makros.
Ich versuche immer die vorgeschlagenen Makros so schnell wie möglich auszuprobieren, leider habe ich erst spät erkannt, eine NEUE DATEI dafür zu nutzen und nicht unbedingt die Datei in der das Makro erst später dazu eingefügt werden kann.

8. Rückmeldung / Erfolge
Natürlich möchte jeder Antworter schnell über seinen Vorschlag eine Antwort erhalten, kann ich gut nachvollziehen. Teilweise bin ich aber nach einiger Zeit am Rechner schon stark erschöpft und kann den Umfangreichen verschiedenen Antwortern nicht mehr folgen, so dass ich mich lieber von PC zurückziehe und eine Pause einlegen muss.

9. Fehlt noch was ?
Ja, natürlich möchte ich mich auf das tiefste für das Durcheinander entschuldigen. Alles was bisher geschehen ist, wurde von mir, aus "mehr oder weniger" Unwissenheit verschuldet und verdient eure Missachtung für mich.
Ich weiß genau, wie frustrierend es sein kann immer und immer wieder falsche Informationen zu bekommen. Ich gelobe BESSERUNG !

Zum Schluss.
Wenn ein Makro die Datei zweimal druckt, dann aber nicht als PDF speichert, kann es sein, dass mir noch irgendein Programm dafür fehlt ?

Dieses Makro von JoWe läuft zwar durch, druckt die Rechnung zweimal aus aber dann kommt die Fehlermeldung
"Laufzeitfehler 9: Index außerhalb des gültigen Bereichs"

Markiert wird von VBA die folgende Zeile:
Sheets("Rechnung").ExportAsFixedFormat 0, _
"C:\MGD Recycling\Rechnungen\Schrott\" & _
CStr(Year(Date)) & "\" & Sheets("Ankauf-Verkauf").Range("DU93")


Das Makro: von JoWe sieht so aus:

Option Explicit

Private Sub CommandButton8_Click()
Sheets("Rechnung").PrintOut , , 2
Sheets("Rechnung").ExportAsFixedFormat 0, _
"C:\MGD Recycling\Rechnungen\Schrott\" & _
CStr(Year(Date)) & "\" & Sheets("Ankauf-Verkauf").Range("DU93")

End Sub

Nochmals vielen Dank für eure Hilfe, ohne euch würde ich es nicht schaffen.
Mit freundlichem Gruß
Hans-Geort
Anzeige
@ JoWE
04.05.2026 22:11:56
Hans-Georg
Moin JoWE,
du hast völlig recht, mit der Vermutung, dass meine Zellen sich ändern.

Liegt einfach daran, dass ich drei Dateien zu bearbeiten habe. Ankauf Schrott, Recycling und Ankauf-Verkauf.

Das macht das ganze natürlich recht unübersichtlich, wenn man meint, alle drei Dateien gleichzeitig bearbeiten zu müssen.
Nun habe ich es selbst gemerkt und mir vorgenommen nur EINE DATEI ZUR ZEIT zu bearbeiten!

Noch einmal Vielen Dank für deine Hilfe, ich werde das Makro später testen, bin heute zu müde dazu.

Mit freundlichem Gruß

Hans-Georg
Anzeige
@ JoWE und andere - Makros laufen durch, speichern aber nich
05.05.2026 17:26:11
Hans-Georg
Hallo JoWE.

Dein Ansatz ist schon mal Super.

Meinen ersten Fehler habe ich gemacht, weil ich glaubte drei Dateien gleichzeitig bearbeiten zu können. Das habe ich mir fest vorgenommen; mache ich nie wieder !

Bei Const oPfad = "C:\MGD Recycling\Rechnungen\Ankauf-Verkauf\" habe ich schon meinen ersten Fehler entdeckt

Korrekt ist:
Const oPfad = "C:\MGD Recycling\Rechnungen\Schrott\"

In der Zeile With Sheets("Ankauf-Verkauf") habe ich versehentlich den falschen Namen angegeben.

Korrekt ist:
With Sheets("Altmetalle")
Dein Makro läuft durch bis zur Message Box und nach dem bestätigen, kommt dann der Laufzeitfehler 1004 - Anwendungs- oder objektdefinierter Fehler


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


Hier nochmal der "richtige" Speicherpfad
C:\MGD Recycling\Rechnungen\Schrott\ (der Einfachheit halber nur ein Wort genommen)

Ist es nicht am einfachsten, das Makro so zu erstellen, dass ein manuelles Speichern möglich ist ?
Soll heißen, dass sich das Dialogfeld zum Speichern der Datei automatisch öffnet und der Speichername schon als Vorgabe in dem Feld zum "Speichern unter" eingegeben ist? Wenn der Speicherpfad bis einschließlich dem Ordner "Schrott" vorgegeben ist, kann man den letzten Unterordner doch per Hand auswählen oder im Ordner "Schrott" direkt speichern ?

Ich hoffe, dass ich nicht zu viel verlange / erwarte. Wichtig ist halt nur, dass die ganze Datei so einfach wie möglich zu bedienen ist.

Die Vorversion lief auf dem Rechner rund zwei Jahre und ich habe mehrere hundert falsche Abspeicherungen löschen müssen. Oftmals fehlten irgendwelche wichtigen Eingaben wie Kundennummern oder Quittungsnummern. Das möchte ich natürlich vermeiden!

Vielen Dank für deine Hilfe

Hans-Georg
Anzeige
AW: @ JoWE und andere - Makros laufen durch, speichern aber nich
05.05.2026 18:26:04
JoWE
jetzt ist es an der Zeit zunächst einmal eine Arbeitsmappe hochzuladen, die genau das alles enthält, was wirklich erforderlich ist.
Dazu wäre eine Screenshot des Dateiexplorers hilfreich, welches die Ordnerstruktur bis hin zu 2026 zeigt!!
Beispielmappe mit Ordnerstruktur und Zellbezügen
05.05.2026 21:13:38
Hans-Georg
Ich hoffe, ihr könnt damit was anfangen

180674.xlsx

Hans-Georg
Anzeige
Frage noch offen nicht angeklickt ...
05.05.2026 21:14:28
Hans-Georg
Frage noch offen nicht angeklickt ...
AW: Beispielmappe mit Ordnerstruktur und Zellbezügen
05.05.2026 21:23:20
schauan
Hallöchen,

also das ist nun ja was anderes. Ursprünglich hast Du einen festen Pfad und nun kommt der durch verketten? Also steckt der Fehler im Verketten?
In Deiner Datei ist nix mit verketten ...

Übrigens wäre es für den einen oder anderen Leser nicht verkehrt, den kompletten Downloadpfad /-link zu posten und nicht nur den Dateinamen. Da muss man den sich den Pfad nicht erst aus den Rippen schneiden ;-)

Anzeige
AW: Beispielmappe mit Ordnerstruktur und Zellbezügen
05.05.2026 21:25:59
schauan
... und wenn Du verkettest könntest Du auch so prüfen, also erst den kürzesten Teil, dann den nächsten usw. Keine Ahnung, wie viele Bestandteile Dein Verketten hat ... Vielleicht würde man auch schon an der Formel (bzw. einem Vergleich der Formel mit den Pfadbildern) sehen, wenn man sie denn hätte, wenn da z..B. ein \ fehlt oder was auch immer.
Anzeige
AW: nun auch die richtige Datei.....
05.05.2026 22:31:31
JoWE
Da sehe ich ein rotes Symbol mit einem Ausrufungszeichen.
Das weist meist auf ein Synchronisierungsproblem mit einem Cloud-Dienst (z.B. OneDrive, Dropbox) hin.
Das könnte schon die Ursache sein, bitte prüfen!
Gruß
Jochen
Anzeige
AW: nun auch die richtige Datei.....
06.05.2026 00:14:05
schauan
... wo ist denn da ein Ausrufezeichen? Ich sehe da nur ein Schaltersymbol (mit Kreis und Strich)- einrichtbar mit Ordner - Eigenschaften - Anpassen - Anderes Symbol ...
AW: nun auch die richtige Datei.....
06.05.2026 12:01:50
JoWE
Ja, aber wenn das rote Warnsymbol nicht Anlass genug ist etwas zu prüfen was dann???
AW: nun auch die richtige Datei.....
06.05.2026 00:06:00
schauan
... irgendwie sehe ich keinen Unterschied zwischen der ...74 und ...75 :-(
Anzeige
AW: @ JoWE
05.05.2026 13:27:56
snb
Liegt einfach daran, dass ich drei Dateien zu bearbeiten habe. Ankauf Schrott, Recycling und Ankauf-Verkauf.


Wie fast immer gibt es hier ein Strukturfehler.
Alle die Daten sollten in nur einem Arbeitsblatt gespeichert werden.
Verwende Autofilter zum selektieren von spezifische Daten.
Verzichte immer auf 'select' in VBA.
Verzichte auf das benennen von parametern die Default sind

Dann reicht schon:
Sub M_snb()

Sheet1.PrintOut , , 2
Sheet1.ExportAsFixedFormat 0, "Beispiel.pdf"
End Sub

Anzeige
AW: @ JoWE
05.05.2026 13:51:47
JoWE
also dann (mit Jahreszahl durch Makro definiert) so:

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


Private Sub CommandButton3_Click()
Dim strFileName As String
Sheets("Rechnung").PrintOut , , 2
strFileName = oPfad & Year(Date) & "\" & Sheets("Ankauf-Verkauf").Range("DU93")
MsgBox strFileName '** nur zum Testen
Sheets("Rechnung").ExportAsFixedFormat 0, strFileName
End Sub


Gruß
Jochen
Anzeige
AW: @ JoWE
05.05.2026 15:10:42
snb
Verzichte auf redundante Variabelen.

Private Sub CommandButton3_Click()

Sheets("Rechnung").PrintOut , , 2
Sheets("Rechnung").ExportAsFixedFormat 0, "C:\MGD Recycling\Rechnungen\Ankauf-Verkauf\" & Year(Date) & "\" & Sheets("Ankauf-Verkauf").Range("DU93")
End Sub
Anzeige
@ JoWE Makro läuft durch, speichert aber nicht
05.05.2026 20:35:30
Hans-Georg
Hallo Jochen,

Dein Makro läuft ohne Probleme durch jedoch wird keine Datei xyz.PDF gespeichert....

Ich habe extra den alten Ordner in ZZZ 2026 ZZZ umbenannt und einen neuen Ordner "2026" erstellt und dieser bleibt nach dem speichern leer !

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

Private Sub CommandButton3_Click()
Dim strFileName As String
Sheets("Rechnung").PrintOut , , 2
strFileName = oPfad & Year(Date) & "\" & Sheets("Ankauf-Verkauf").Range("DU93")
MsgBox strFileName '** nur zum Testen
Sheets("Rechnung").ExportAsFixedFormat 0, strFileName
End Sub

Fehlt da nicht noch was im Code ?

ThisWorkbook.Sheets("Rechnung_Schrott").ExportAsFixedFormat Type:=xlTypePDF,

Die Messagebox finde ich prima !

MfG

Hans-Georg
Anzeige
Beispielmappe kommt später
04.05.2026 16:30:24
Hans-Georg
Hallo Onur,
Danke für deinen Hinweis, an eine Beispielmappe habe ich nicht gedacht.
Leider habe ich heute nur wenig Zeit, denn ich musss noch dringend nach Hamburg fahren.

Ich werde die Beispielmappe heute Abend erstellen und hochladen.

Hans-Georg
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