Clever-Excel-Forum

Normale Version: VBA: Datei temporär für Druck umbenennen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

ich habe in einer Datei ein Drop-Down-Feld, welches als Filter für mehrere Grafiken dient.
Per VBA hat der Nutzer die Möglichkeit direkt einen Druck als PDF mit einem bestimmten Wert zu starten (Versand der PDF Datei erfolgt per Mail an das jeweilige Nutzerkonto)

 Range("A6").Select
 ActiveCell.FormulaR1C1 = "Wert"

  Dim sDruckerAktuell As String
  sDruckerAktuell = Application.ActivePrinter
  Application.ActivePrinter = "\\W1SRV03\PDF Standard auf Ne12:"
  Sheets(Array("Auswertung")).PrintOut Copies:=1, Collate:=True
  Application.ActivePrinter = sDruckerAktuell


Nun habe ich den unschönen Effekt, dass die Datei immer gleich benannt ist und so in den E-Mails nicht ersichtlich ist, welcher Filter in A6 eingestellt war (als E-Mail-Betreff wird immer der aktuelle Dateiname verwendet).
Gibt es eine Möglichkeit, eine Datei temporär umzubenennen mit dem Wert aus A6?
z.B. so:

1. Merke dir den aktuellen Dateiname
2. Speichere die Datei mit dem neuen Namen --> "alter Dateiname + Ergänzung aus A6"
3. Drucke die Datei mit o. g. VBA-Code
4. Benenne die Datei wieder in den alten Namen um
5. Speichern

Danke schon mal vorab und viele Grüße 

Alpha
Hallo

die 2013 er Version kann doch schon den Export als pdf.


dann würde das reichen..
Code:
   Dim Dateiname As String, Pfad As String
   
   Pfad = "X:\Temp\"
   
   With Sheets("Auswertung")
       Dateiname = Pfad & ThisWorkbook.Name & "_" & .Range("A6") & ".pdf"
   
       .ExportAsFixedFormat Type:=xlTypePDF, Filename:=Dateiname, _
       Quality:=xlQualityStandard, IncludeDocProperties:=True, _
       IgnorePrintAreas:=False, OpenAfterPublish:=True
       
   End With
End Sub


LG UweD
Hi UweD,

danke für Deine Antwort!
Ich versuche diese mal umzusetzen. Da die Datei jedoch von mehreren Personen verwendet wird, die nicht alle Zugriff auf die gleichen Serverregionen haben, wird es wahrscheinlich schwierig einen passenden Speicherort zu finden.
Der Versand über E-Mail-PDF-Drucker wäre mir lieber. Hast du hierzu noch eine Idee?

Danke nochmal und viele Grüße
Alpha
Hallo nochmal


das mit der Druckerzurdnung wird dir aber auch noch Probleme bereiten.
Die PDF-Creator werden auf unterschiedlichen Rechnern auch unterschielichen Ports zugewiesen.


Egal. so evtl.??


Code:
Sub PDF_erstellen()
   Dim WB1, WB2, TB1
   Dim sDruckerAktuell As String
   Dim Datei As String
   
   Set WB1 = ThisWorkbook
   Set TB1 = WB1.Sheets("Auswertung")
   
   'Dateiname ohne Extension ...
   Datei = Left(WB1.Name, InStrRev(WB1.Name, ".") - 1) & "_" & TB1.Range("A6")
   
   'Drucker merken
sDruckerAktuell = Application.ActivePrinter
   
'Drucken
Application.ActivePrinter = "\\W1SRV03\PDF Standard auf Ne12:"
   
   'kopiert das Blatt in eine neue Datei
   TB1.Copy
   Set WB2 = ActiveWorkbook
   
   With WB2
       'Temporär speichern
       .SaveAs Filename:=Datei
       
       'Drucken in pDF
       .Sheets(1).PrintOut Copies:=1, Collate:=True
       Application.ActivePrinter = sDruckerAktuell
       
       'Name plus Pfad
       Datei = .FullName
       
       'Datei schliesen
       .Close
   
       'Löscht die temporäre Datei
       Kill Datei
   End With
   

End Sub


LG UweD
Hallöchen,

Zitat:Da die Datei jedoch von mehreren Personen verwendet wird, die nicht alle Zugriff auf die gleichen Serverregionen haben, wird es wahrscheinlich schwierig einen passenden Speicherort zu finden.

nutze für die Ermittlung eines Speicherortes eine Systemvariable wie z.B. %temp%

Dateiname = Environ("Temp") & "\" & ThisWorkbook.Name & "_" & .Range("A6") & ".pdf"