Excel VBA Zapisz jako (drukuj) do PDF

Ten samouczek pokaże, jak zapisać / wydrukować do pliku PDF w Excel VBA.

Drukuj do PDF

Ta prosta procedura spowoduje wydrukowanie ActiveSheet do pliku PDF.

123456 Sub SimplePrintToPDF()ActiveSheet.ExportAsFixedFormat Typ:=xlTypePDF, Nazwa pliku:="demo.pdf", Jakość:=xlQualityStandard, _IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish:=TrueNapis końcowy

Stworzyłem również funkcję z obsługą błędów itp., która drukuje ActiveSheet do pliku PDF:

12345678910111213141516171819202122232425262728293031323334353637383940 Sub DrukujPDF()Zadzwoń Zapisz_PDFNapis końcowyFunkcja Save_PDF() As Boolean ' Kopiuje arkusze do nowego pliku PDF w celu wysłania e-mailemDim Thissheet As String, ThisFile As String, PathName As StringDim SvAs As StringApplication.ScreenUpdating = Fałsz' Pobierz nazwę zapisu plikuTen arkusz = Aktywny arkusz.NazwaThisFile = ActiveWorkbook.NamePathName = Aktywny Skoroszyt. ŚcieżkaSvAs = Nazwa Ścieżki & "\" & Ten arkusz & ".pdf"'Ustaw jakość drukuPrzy błędzie Wznów DalejActiveSheet.PageSetup.PrintQuality = 600Błąd.WyczyśćW przypadku błędu Przejdź do 0' Poinstruuj użytkownika, jak wysyłaćW przypadku błędu Przejdź do RefLibErrorActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=SvAs, Quality:=xlQualityStandard, IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish:=TrueW przypadku błędu Przejdź do 0Zapisz tylko:MsgBox "Kopia tego arkusza została pomyślnie zapisana jako plik .pdf: " & Chr(13) & Chr(13) & SvAs & _„Przejrzyj dokument .pdf. Jeśli dokument NIE wygląda dobrze, dostosuj parametry drukowania i spróbuj ponownie”.Zapisz_PDF = PrawdaPrzejdź do końcaMakroBłąd refLib:MsgBox "Nie można zapisać jako PDF. Nie znaleziono biblioteki referencyjnej."Zapisz_PDF = FałszKoniecMakro:Koniec funkcji

Funkcja zwraca TRUE lub FALSE, jeśli drukowanie do pliku PDF powiodło się, czy nie.

Zapisz i wyślij e-mailem funkcję PDF

Ta funkcja zapisze ActiveSheet jako plik PDF i (opcjonalnie) załączy plik PDF do wiadomości e-mail (zakładając, że masz zainstalowany program Outlook):

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 Podtest_Zapisz_PDF()Zadzwoń Wyślij_PDF("Wyślij e-mail")Napis końcowyFunction Send_PDF(Opcjonalna akcja As String = "SaveOnly") As Boolean ' Kopiuje arkusze do nowego pliku PDF w celu wysłania e-mailemDim Thissheet As String, ThisFile As String, PathName As StringDim SvAs As StringApplication.ScreenUpdating = Fałsz' Pobierz nazwę zapisu plikuTen arkusz = Aktywny arkusz.NazwaThisFile = ActiveWorkbook.NamePathName = Aktywny Skoroszyt. ŚcieżkaSvAs = Nazwa Ścieżki & "\" & Ten arkusz & ".pdf"'Ustaw jakość drukuPrzy błędzie Wznów DalejActiveSheet.PageSetup.PrintQuality = 600Błąd.WyczyśćW przypadku błędu Przejdź do 0' Poinstruuj użytkownika, jak wysyłaćW przypadku błędu Przejdź do RefLibErrorActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=SvAs, Quality:=xlQualityStandard, IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish:=TrueW przypadku błędu Przejdź do 0' Wysłać emailJeśli akcja = „Wyślij e-mail” WtedyW przypadku błędu IdźDo Tylko zapiszApplication.Dialogs(xlDialogSendMail).ShowW przypadku błędu Przejdź do 0Przejdź do końcaMakroZakończ, jeśliZapisz tylko:MsgBox "Kopia tego arkusza została pomyślnie zapisana jako plik .pdf: " & Chr(13) & Chr(13) & SvAs & _„Przejrzyj dokument .pdf. Jeśli dokument NIE wygląda dobrze, dostosuj parametry drukowania i spróbuj ponownie”.Wyślij_PDF = PrawdaPrzejdź do końcaMakroBłąd refLib:MsgBox "Nie można zapisać jako PDF. Nie znaleziono biblioteki referencyjnej."Wyślij_PDF = FałszKoniecMakro:Koniec funkcji
wave wave wave wave wave