188 Aufrufe
Gefragt in Tabellenkalkulation von rastermen Mitglied (496 Punkte)
Hallo zusammen,

ich habe eine Arbeitsmappe, darin befindet sich das Blatt "RE M".

Diese Drucke ich aus.

Dann auf "Verschieben und Kopieren" > "In neue Arbeitsmappe"> "Kopie erstellen.

Dann auf "Speichern unter" > "Durchsuchen">

C:\Users\Büro\Documents\Kaltenbach Rechnungen\Rechnungen Kaltenbach

gehe auf > Dateityp:"PDF" > Dateiname: --hier klicke ich die letzte Rechnung an und gebe die neue Re Nr. ein. > "Speichern"

Danach schließe ich das Fenster (RE M) Kopie- und beantworte die Speicher- Frage mit "Nicht speichern"

Bei der noch offenen Arbeitsmappe klicke ich auf "schließen" und "Speichern"

Und dazu habe ich nun meine Frage:

Ist dieser Ablauf über ein Makro zu erstellen, mit der Hauptfrage: Ist es möglich die Rechnungsnummer die auf Blatt "RE M" in Zelle "E13" steht zu übernehmen und diese beim Speichern als PDF zu nutzen und diese als neue Re Nummer speichert?

(über "Makro aufzeichnen " habe ich das schon versucht , es scheitert immer an der neuen Re. Nummer.)

(mit VBA kenne ich mich sehr sehr wenig aus)

Ich bedanke mich  und freue mich auf eine Rückantwort

Gruß

Rudolf

4 Antworten

0 Punkte
Beantwortet von xlking Experte (1.5k Punkte)
Hallo Rudolf,

wenn ich dich richtig verstehe, entspricht die neue Rechnungsnummer dem Dateinamen der zuletzt gespeicherten PDF + 1 Das ließe sich auslesen sofern alle Rechnungen im selben Ordner gespeichert sind. Ist das der Fall und bist du der Einzige, der solche Rechnungen erstellt? Andernfalls brauchst du eine separate Datei, wo die laufende Nr. gespeichert ist und auf die das Makro zugreifen kann. Eine simple Txt-Datei reicht dafür völlig aus.

Wenn du natürlich jedes Mal die Hauptarbeitsmappe überspeicherst kannst du auch auf deren Rechnungsnr. + 1 zurückgreifen. Du musst dann nur sicherstellen, dass niemand Anderes die Datei öffnet, während du noch drin bist. Sonst gibt es doppelte Rechnungsnummern.

Warum kopierst du die Daten vor dem Drucken erst in eine neue Excelarbeitsmappe? Du kannst doch die PDF auch direkt vom Haupt-Workbook erzeugen.

Gruß Mr. K.
0 Punkte
Beantwortet von rastermen Mitglied (496 Punkte)

Hallo Mr. K.,

herzlichen Dank für deine Rückmeldung.

Ich habe einen Denkfehler in meiner Anfrage.

Das ist eine Arbeitsmappe mit drei identischen Rechnungsprogrammen die ( alle auf ein Artikelstammblatt zugreifen).

Rechnungen können also drei Stück für unterschiedliche Firmen erstellt werden.

Rechnungsnummern werden händisch eingetragen.

Das 1te Formular heißt "RE M"

Das 2te Formular heißt "RE (Z1)

Das 3te Formular heißt  "RE (Z2)

(Zugriff hat nur eine Person)

----------

Wenn die Rechnung "RE M"  fertig ist sollte das Makro zuerst das Blatt ausdrucken, dann von Blatt "RE M" die "RE Nummer" aus Zelle "E13"auslesen und diese dann in die Datei:

C:\Users\Büro\Documents\Kaltenbach Rechnungen\Rechnungen Kaltenbach     im Format "PDF" dazu speichern

dasselbe wenn

Wenn die Rechnung "RE (Z1) fertig ist sollte das Makro zuerst das Blatt ausdrucken, dann von Blatt "RE (Z1)  die "RE Nummer" aus Zelle "E13"auslesen und diese dann in die Datei:

C:\Users\Büro\Documents\Meier Rechnungen\Rechnungen Meier     im Format "PDF" dazu speichern.

und zuletzt

C:\Users\Büro\Documents\Müller Rechnungen\Rechnungen Müller im Format "PDF" dazuspeichern.

Ich denke das geht nur mit drei Makros?

Hoffe ich habe nichts dazu vergessen und gut Ausgedrückt

Gruß Rudolf

+1 Punkt
Beantwortet von xlking Experte (1.5k Punkte)

Hey Rudolf, 

also wenn es dir nur um das Drucken und Speichern geht, sollte der Makrorekorder eigentlich alle nötigen Befehle ausspucken. Der leicht angepasste Code sieht dann in etwa so aus:

Sub Speichern()
   
   Dim Pfad As String, Dateiname As String
   
   ActiveWorkbook.Save
   
   Select Case ActiveSheet.Name
   Case "RE M"
     Pfad = "C:\Users\Büro\Documents\Kaltenbach Rechnungen\Rechnungen Kaltenbach"
   Case "RE (Z1)"
     Pfad = "C:\Users\Büro\Documents\Meier Rechnungen\Rechnungen Meier"
   Case "RE (Z2)"
     Pfad = "C:\Users\Büro\Documents\Müller Rechnungen\Rechnungen Müller"
   End Select
   If Right(Pfad, 1) <> "\" Then Pfad = Pfad & "\"
   Dateiname = Range("E13") & ".pdf"
   
   ActiveSheet.PrintOut
   ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Pfad & Dateiname

End Sub

Eventuell zeichnet der Makrorekorder bei Printout und ExportAsFixedFormat noch zusätzliche Paramter auf, die nicht unbedingt notwendig sind daher hab ich sie hier weggelassen. Solltest du Probleme haben, probierst nochmal mit diesen Parametern.

Falls du die Datei am Ende noch schließen willst, kannst du noch die Zeile ActiveWorkbook.Close hinzufügen.

Gruß Mr. K.

0 Punkte
Beantwortet von rastermen Mitglied (496 Punkte)
Hallo Mr. K.

ich bin immer wieder begeistert wie hier geholfen wird.

Habe heute Nacht das Makro noch eingefügt und angepasst und hat auch sofort funktioniert.

DANKE für deine Antwort

Wünsche einen schönen Sonntag

Gruß Rudolf
...