[Excel] Makro - Blatt speichern "Name"

Martin1220

Newbie
Registriert
Mai 2019
Beiträge
5
Hallo!
Bin neu hier - vielleicht kann jemand helfen.

In Tabelle 5 befindet sich ein Button.
Dieser soll das Blatt "Einzel" öffnen und dort aus einem Dropdown-Menü einen bestimmten Wert auswählen. Daraufhin verändern sich die dargestellten Daten im Blatt "Einzel".
Nun soll diese Darstellung als .pdf gespeichert werden. Dateiname soll der Wert aus dem Dropdown-Menü sein.

Bis jetzt habe ich folgendes probiert:

Code:
Private Sub CommandButton1_Click()  'Button startet Makro
Sheets("Einzel").Select             'Blatt "Einzel" öffnen
ActiveSheet.Range("E8").Value = "5" 'Im Dropdown-Menü im Feld E8 einen bestimmten Wert aufrufen
Call Drucken                        'Startet das Druck-Makro
End Sub

Sub Drucken()
'Druckbereich des Blattes soll als .pdf gespeichert werden. Der Name der Datei soll dem oben ausgewählten Wert entsprechen
ChDir ThisWorkbook.Path
    Tabelle4.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        Range("E8").Value & ".pdf", Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
        False
End Sub


Funktioniert soweit sogut... nur dass als Dateiname immer der Wert "2" herauskommt - unabhängig welchen Wert ich in den Code eingebe.
Ideen?
 
Im Click Handler benutzt du bei der Zuweisung "ActiveSheet.Range("E8").Value, im Sub Drucken() nur "Range("E8") ohne ActiveSheet davor. Könnte es daran liegen?

Bin noch auf der Arbeit deshalb kann ich das nicht selbst testen.
 
  • Gefällt mir
Reaktionen: Martin1220
Da der Verweis relativ gesetzt ist und nicht absolut: Sicher, dass das richtige Blatt im Vordergrund ist?

Aber warum weist du dem Feld einen Wert zu und liest ihn anschließend wieder aus?
Warum den Wert nicht gleich der Drucken-Funktion uebergeben?
 
  • Gefällt mir
Reaktionen: Martin1220 und misterxdev93
Scientist: Ganz einfach - weil ich keinen Schimmer habe, wie ich der Drucken-Funktion einen Wert übergeben könnte :D
misterxdev93: Danke - das war die Lösung!

Ich würde den Code jetzt gerne noch etwas verbessern. Könnt ihr mir bitte sagen: Beibe ich für dbzgl Fragen am besten in diesem Thread oder macht man in diesem Forum pro Frage einen neuen Thread auf?
 
Code:
Private Sub CommandButton1_Click()  'Button startet Makro
Sheets("Einzel").Select             'Blatt "Einzel" öffnen
Call Drucken("5")                   'Startet das Druck-Makro
End Sub

Sub Drucken(ByVal wert as String)
'Druckbereich des Blattes soll als .pdf gespeichert werden. Der Name der Datei soll dem oben ausgewählten Wert entsprechen
ChDir ThisWorkbook.Path
    Tabelle4.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        wert  & ".pdf", Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
        False
End Sub

Das sollte schon reichen, ansonsten: https://de.wikibooks.org/wiki/VBA_in_Excel/_ByRef_und_ByVal
 
  • Gefällt mir
Reaktionen: Martin1220
Ist ja alles schön und gut, aber wie passt das damit zusammen?

Dieser soll das Blatt "Einzel" öffnen und dort aus einem Dropdown-Menü einen bestimmten Wert auswählen. Daraufhin verändern sich die dargestellten Daten im Blatt "Einzel".

Wenns wirklich nur darum geht den zu speichernden Dateinamen zu übergeben, dann ok :-)
 
  • Gefällt mir
Reaktionen: Martin1220
Admin:
Der alte Thread darf gerne weiter genutzt werden. Ein Blick in die Forenregeln ist auch hilfreich.

Alles klar!
Hallo!

Folgender Code funktioniert dank eurer Hilfe! :D (...)
Zur Optimierung würde ich gerne noch folgende Funktionen implementieren:
.) Nicht jeder Wert soll zu einer .pdf-Datei, sondern jeder Wert soll einfach zu einer anderen Seite einer Mehrseitigen .pdf-Datei werden.
.) Bei Start des Makros soll sich ein Textfeld öffnen, in welchem mit Checkboxen (inkl. "select all") ausgewählt werden kann, welche Werte denn gedruckt werden sollen. (Also 1-28 oder zB nur 1, 6, 20)

Mir ist klar, dass mein Code wohl ziemlich unelegant ist - bin noch Anfänger und versuche mich über dieses Projekt in die Materie einzuarbeiten...
Danke schon mal für Feedback/Lösungsvorschläge und Ideen! :)

Scientist:
Belese dich mal zum Thema Schleifen, damit kannst du deine Struktur erst mal komplett vereinfachen.
Ansonsten ist die Frage, wie der aufgebaut ist und ob man das ohne weiteres auf ein Dokument mit variabler Laenge erweitern kann.

Ansonsten lassen sich die Einzeldateien auch anschließend mithilfe eines externen Programms (bspw. pdftk) zusammenfuegen und die Einzeldateien loeschen.

Hallo Scientist, danke - bzgl. Schleife wurde mir bereits geholfen:
http://www.office-loesung.de/p/viewtopic.php?f=166&t=804252 (Hab dort dieselbe Frage gestellt)


Code:
For i = 1 to 28
   Range("E8") = i
   Drucken
Next
 
Zurück
Oben