VBA - Mehrere Druckbereiche unter verschiedenen Namen als PDF speichern?

1 Antwort

Mal zur Orientierung:

Sub BereicheDrucken()
  Dim n As Name
  Dim sFileName As String

For Each n In ActiveWorkbook.Names If Not Right(n.Name, Len("Print_Area")) = "Print_Area" Then sFileName = "E:\tmp\" & n.Name & ".pdf" Range(n.Name).ExportAsFixedFormat Type:=xlTypePDF, _ Filename:=sFileName, Quality:=xlQualityStandard, IncludeDocProperties:=True, _ IgnorePrintAreas:=True, OpenAfterPublish:=False End If Next End Sub

ReneSaince 
Beitragsersteller
 30.03.2016, 16:58

Nur damit ich das richtig verstehe:

If Not Right(n.Name, Len("Print_Area")) = "Print_Area" Then
sFileName = "E:\tmp\" & n.Name & ".pdf"

würde bei mir wie folgt aussehen:

If Not Right (n.Name,  Len("Hamburg1")) = "Hamburg1"

Then sFileName = "E:\tmp\"Hamburg & ".pdf"

(wobei Hamburg der Name meiner PDF wäre?)

Der Rest von deinem Code bliebe unberührt?

Hab ich das so richtig verstanden?

Ich danke Dir für Deine Mühe

0
Suboptimierer  30.03.2016, 17:03
@ReneSaince

Nö. Ich habe das so verstanden, dass du nicht den Druckbereich exportieren willst, sondern alle benamten Bereiche. Da der Druckbereich auch als benamter Bereich zählt, habe ich ihn mit If ausgeschlossen. Auf diese Weise musst du alle benamten Bereiche ausschließen, die nicht als PDF exportiert werden sollen. Geh die Namen in deinem Namensmanager mal durch.

Ansonsten müsstes du mir erklären, was du mit "verschiedene Druckbereiche" meinst, denn normalerweise kann es nur einen Druckbereich geben.

1
ReneSaince 
Beitragsersteller
 30.03.2016, 17:08
@Suboptimierer

Ok wahrscheinlich hatte ich mich falsch ausgedrückt. Ich habe in der Tabelle verschiedene Bereiche benannt... so ist zum Beispiel A1:H18 im Namensfeld oben links als "Hamburg1" benannt. und so geht die liste nach unten hin weiter. Diese benannten Bereiche möchte ich nun auf einem Klick als verschieden benannte einzelne PDF´s abspeichern über VBA.

Sorry für das Missverständnis

0
ReneSaince 
Beitragsersteller
 30.03.2016, 17:09
@ReneSaince

Theoretisch brauche ich nach erstellen der PDF´s dann keinen Druckbereich mehr. Die benannten Sektoren müssten jedoch erstmal gespeichert werden :)

0
ReneSaince 
Beitragsersteller
 30.03.2016, 17:14
@Suboptimierer

Bin gerade am austesten. Was müsste ich den wo eintragen in deinem Code?

0
Suboptimierer  30.03.2016, 17:16
@ReneSaince

Du kannst den Code fast 1:1 übernehmen. Lediglich das Ausgabeverzeichnis E:\tmp\ müsstest du deiner Umgebung anpassen.

Du hast doch die Namen in der Arbeitsmappe definiert, oder? Überprüf das bitte im Namensmanager.

0
ReneSaince 
Beitragsersteller
 30.03.2016, 17:26
@Suboptimierer

Der sagt mir, das das Makro nicht ausgefüht werden kann, da es in der Arbeitsmappe nicht verfügbar ist.

Ich kann hier leider keinen Screenshot von der Mappe reinsetzen. Tabellenblatt1 hat bei mir 179 "markierte" Bereiche, die ich oben links in dem Feld wo dann eigentlich z.B. A12 steht benannt.

Wenn ich auf die Suchfunktion und Gehe zu gehe, zeigt er mir die Namen auch an

0
Suboptimierer  30.03.2016, 17:30
@ReneSaince

Das Makro fügst du in ein Modul ein, welches du der Arbeitsmappe hinzufügst.

Die Bereiche müssen für die gesamte Arbeitsmappe definiert sein, sonst findet die Schleife sie nicht.

Formeln → Namensmanager → Spalte Bereich

Hängen die Namen am Tabellenblatt, müsste das Makro umgeschrieben werden.

1
ReneSaince 
Beitragsersteller
 30.03.2016, 17:30
@ReneSaince

Ok Es scheint jetzt zu funktionieren.

Kann ich den Namen unter dem sie abgespeichert werden noch irgendwo anders definieren, oder muss ich die Bereiche dafür umbenennen?

Und er setzt mir vor jede PDF RobinAachen davor. Kriege ich meinen Namen da Weg?

0
Suboptimierer  30.03.2016, 17:33
@ReneSaince

Du kannst den Namen in einer Zelle definieren und diese mit Range("<Zelladresse>").Value abrufen oder du verankerst den Pfad im Quelltext statt E:\tmp\

Das RobinAachen bekommst du so weg:

sFileName = Range("F1").Value & Replace(n.Name, "RobinAachen", "") & ".pdf"

(ungetestet)

1
ReneSaince 
Beitragsersteller
 30.03.2016, 17:35
@ReneSaince

sFileName = "N:\03 LOGISTIK\Robin" & n.Name & ".pdf"

Da soll es abgespeichert werden. Er speichert es jedoch nur unter LOGISTIK und setzt Robin an den Anfang des Dateinamens

0
Suboptimierer  30.03.2016, 17:36
@ReneSaince

Du musst den Pfad mit \ abschließen:

sFileName = "N:\03 LOGISTIK\Robin\" & n.Name & ".pdf"
1
ReneSaince 
Beitragsersteller
 30.03.2016, 17:42
@Suboptimierer

Ok es funktioniert.

Ich danke Dir für Deine Geduld :) :) :)

1