2016-07-21 11 views
0

Ich schreibe ein Makro, das einen täglichen Bericht automatisiert, den ich jeden Tag sende. Eine meiner letzten Aufgaben besteht darin, ein Skript zu schreiben, das das formatierte Excel-Blatt als PDF speichert (über eine Option zum Drucken in PDF) und es in einem bestimmten Ordner speichert. Ich habe folgendes geschrieben, aber es fragt den Benutzer immer noch, wo er es speichern soll.Speichern einer PDF-Datei automatisch in einem vorgegebenen Ordner

Was wäre ein besserer Weg, oder ein allgemeiner Weg, um es automatisch in einem Ordner irgendwo auf meinem Desktop speichern zu lassen?

Sub printToPDF() 
    Worksheets("general_report").PageSetup.CenterVertically = False 
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:="Foxit Reader PDF Printer" 
End Sub 
+0

Haben Sie sah [Workbook.ExportAsFixedFormat()] (https://msdn.microsoft.com/en-us/library/office/ff198122 .aspx)? – Mikegrann

+0

Ich unterrichte das alles wie ich gehe. Ich habe versucht, einige der Arbeiten von dieser Seite zu verwenden, aber es wird ein Fehler ausgegeben, wenn ich versuche, einen Dateinamen einzugeben. Ich frage mich, ob es daran liegt, dass ich falsche Argumente mit falschen Objekten verwende. – Rivers31334

+0

Wenn Sie den Fehlercode eingeben, kann ich einen Blick auf mögliche Fehler werfen. Bearbeiten Sie einfach Ihren Post und wir werden ihn von dort aus übernehmen. – Mikegrann

Antwort

1

Dies sollte die Arbeit machen,

Sub printToPDF() 

    Dim FilePath As String 
    Dim FileName As String 

    FilePath = "C:\Users\userName\Desktop\" 'Change as per your username 

    ActiveSheet.Copy 'Copy a worksheet to a new workbook 

    'It saves .PDF file at your Descrop with the name of the worksheet 
    ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, FileName:=FilePath & ActiveSheet.Name, _ 
     Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _ 
     OpenAfterPublish:=False 

    'Closing a newly created workbook without saving it 
    Application.DisplayAlerts = False 
    ActiveWorkbook.Close 

End Sub 
Verwandte Themen