Pretvorite Excel u PDF pomoću VBA - jedini vodič koji će vam trebati

*Ovo je gostujući post Ryana Wellsa, kolege blogera i sjajnog VBA programera.*

Ako radite s programom Excel, od vas je nesumnjivo zatraženo da napravite sažetke svog rada.

Izvješća o prodaji, računi, predviđanja, rasporedi, kako god.

Znate li što je zajedničko svim ovim dokumentima? Izgledaju sjajno u PDF obliku. Znaš što još? Uprava voli PDF -ove!

Pretvorite Excel u PDF

U ovom vodiču pokazat ću vam kako koristiti Excel VBA za pretvaranje svih vrsta Excel objekata u PDF -ove:

Svaku ću makro predstaviti nekim komentarom. Na taj ćete ih način moći brzo pronaći, kopirati u VBA editor i koristiti.

Kada pokrenete bilo koju od ovih makronaredbi, pojavit će se dijaloški okvir Spremi kao s pitanjem gdje želite spremiti svoj PDF. Zadani naziv uključuje datum i vremensku oznaku kada ste makro izvršili u formatu gggggmmdd_hhmmss.

Prijeđimo odmah na to.

Evo makronaredbi:

Ispis odabira u PDF

Ova mi je osobno najdraža. Ovaj će makro pretvoriti ćelije koje ste aktivno odabrali u PDF.

Ako ste odabrali samo jednu ćeliju, VBA makronaredba je dovoljno pametna da shvati da vjerojatno ne želite pretvoriti samo jednu ćeliju pa vas pita da odaberete raspon koji želite pretvoriti:

Sub PrintSelectionToPDF () 'SUBROUTINE: PrintSelectionToPDF' DEVELOPER: Ryan Wells 'OPIS: Ispišite trenutno odabrani raspon u PDF Dim DimRen As Range Dim strfile As String Dim myfile As Variant Ako je Selection.Count = 1 Zatim postavite ThisRng = Application.InputBox ( "Odaberite raspon", "Dohvati raspon", Vrsta: = 8) Inače postavite ThisRng = Odabir završi ako "Upit za spremanje lokacije strfile =" Odabir "&" _ "_ & Format (Sada ()," gggggmmdd_hhmmss ") _ & ".pdf" strfile = ThisWorkbook.Path & "\" & strfile myfile = Application.GetSaveAsFilename _ (InitialFileName: = strfile, _ FileFilter: = "PDF datoteke ( *.pdf), *.pdf", _ Naslov: = "Odaberite naziv mape i datoteke za spremanje kao PDF") Ako je moja datoteka "Netačno" Zatim "spremite kao PDF ThisRng.ExportAsFixedFormat Vrsta: = xlTypePDF, Naziv datoteke: = _ myfile, Kvaliteta: = xlQualityStandard, IncludeDocProperties: = True, _ IgnorePrintAreas: = True, _ IgnorePrintAreas: False, OpenAfterPublish: = True Else MsgBox "Nije odabrana datoteka. PDF neće biti spremljen", vbOKSamo, "Nije odabrana datoteka" Završi ako završi Sub

Nakon što odaberete raspon i kliknete U redu, prikazat će se dijaloški okvir u kojem možete odabrati mjesto na koje želite spremiti PDF.

Automatski će izabrati datum i vrijeme sa sata vašeg sustava i dodati ih imenu datoteke.

Ispišite jednu tablicu u PDF

Mnogi korisnici programa Excel Excel pohranjuju svoje podatke u organizirane tablice. Zapravo, sam Sumit Bansal toliko voli Excelove tablice da ih naziva skrivenim blagom u Excelu.

Ovaj makro ispisuje tablicu po vašem izboru u PDF. Kada pokrenete makro, od vas će se tražiti naziv tablice koju želite spremiti.

Sub PrintTableToPDF () 'SUBROUTINE: PrintTableToPDF' DEVELOPER: Ryan Wells 'OPIS: Ispišite tablicu po vašem izboru u PDF Dim strfile As String Dim myfile As Variant Dim strTable As String, r As Range Application.ScreenUpdating = False' Uđite u tablicu naziv koji želite spremiti strTable = InputBox ("Kako se zove tablica koju želite spremiti?", "Unesite naziv tablice") 'Tablica koju želite spremiti Ako je Trim (strTable) = "" Zatim izađite iz Sub' upita za spremanje lokacija strfile = strTable & "_" _ & Format (Now (), "yyyymmdd_hhmmss") _ & ".pdf" strfile = ThisWorkbook.Path & "\" & strfile myfile = Application.GetSaveAsFilename _ (InitialFileName: = strfile, _ FileFilter: = "PDF datoteke ( *.pdf), *.pdf", _ Naslov: = "Odaberite naziv mape i datoteke za spremanje kao PDF") Ako je moja datoteka "Netačno" Zatim "spremite kao PDF raspon (strTable). ExportAsFixedFormat vrsta : = xlTypePDF, Naziv datoteke: = myfile, Kvaliteta: = xlQualityStandard, _ IncludeDocProperties: = True, IgnorePrintAreas: = False, OpenAfterPublish: = True Else MsgBox "Nije odabrana datoteka. PDF neće biti odabran spremljeno ", vbOKOnly," No File selected Selected "End if Application.DisplayAlerts = False LetsContinue: With Application .ScreenUpdating = True .DisplayAlerts = True End With Exit Sub End Sub

Nakon što unesete naziv tablice i kliknete U redu, prikazat će se dijaloški okvir u kojem možete odabrati mjesto na koje želite spremiti PDF.

Automatski će odabrati datum i vrijeme sa sata vašeg sustava i dodati ih imenu datoteke.

Ispišite sve tablice za odvajanje PDF -ova

Ako vaša proračunska tablica ima nekoliko tablica i svaku morate spremiti u zasebni PDF, možete pokrenuti ovaj VBA kôd.

Kada pokrenete ovu makronaredbu, pojavit će se dijaloški okvir s molbom da odaberete mapu u koju želite spremiti svoje PDF -ove.

Nakon što odaberete mapu, makronaredba će spremiti svaku tablicu u PDF s nazivom tablice koji se prikladno pojavljuje u naslovu PDF -a.

Sub PrintAllTablesToPDFs () 'SUBROUTINE: PrintAllTablesToPDFs' DEVELOPER: Ryan Wells 'OPIS: Ispišite svaku tablicu u svojoj proračunskoj tablici u drugi PDF Dim strTables () As String Dim strfile As String Dim ch As Object, sh As Radni list Dim Kao varijanta Dim tbl Kao ListObject Dim sht Kao radni list s Application.FileDialog (msoFileDialogFolderPicker) .Title = "Gdje želite spremiti svoj PDF?" .ButtonName = "Spremi ovdje" .InitialFileName = ThisWorkbook.Path If .Show = -1 Zatim 'ako se pritisne OK sfolder = .SelectedItems (1) Else End End If End With Za svaki sht u ovoj radnoj knjizi. Radni listovi za svaki tbl u sht .ListObjects myfile = ThisWorkbook.Name & ""& tbl.Name &""_ & Format (Now ()," yyyymmdd_hhmmss ") _ &" .pdf "myfile = sfolder &" \ "& myfile sht.Range (tbl.Name) .ExportAsFixedFormat Vrsta: = xlTypePDF, Naziv datoteke: = _ moja datoteka, Kvaliteta : = xlQualityStandard, IncludeDocProperties: = True, _ IgnorePrintAreas: = False, OpenAfterPublish: = True Sljedeći tbl Sljedeći sht Kraj Sub

Ispišite sve listove u jedan PDF

Ne znam za vas, ali u mom poslu moramo zadržati PDF kopije gotovo svih naših proračunskih tablica. Kopije naših proračunskih tablica u PDF -u dodajemo našim proračunima dizajna. Ti su PDF-ovi nekad pretvarani u mikrofiše i zasvođeni za dugotrajno čuvanje. Znate, u slučaju da se dogodila apokalipsa.

Ako se nađete u sličnoj situaciji, lijepo je biti u mogućnosti automatski pretvoriti sve listove u proračunskoj tablici u jedan PDF. Evo VBA makronaredbe koja će učiniti upravo to:

Sub PrintAllSheetsToPDF () 'SUBROUTINE: PrintAllSheetsToPDF' DEVELOPER: Ryan Wells 'OPIS: Kombinirajte sve svoje radne listove u jedan PDF Dim strSheets () As String Dim strfile As String Dim sh As Worksheet Dim icount As Integer Dim My Shete Sheart As Variant' u niz za svaki sh U ActiveWorkbook.Worksheets If sh.Visible = xlSheetVisible Zatim ReDim Očuvaj strSheets (icount) strSheets (icount) = sh.Naziv icount = icount + 1 End If Next sh Ako icount = 0 Tada 'Nema pronađenih grafikona. Pogreška pri bušenju MsgBox "PDF se ne može stvoriti jer nisu pronađeni listovi.",, "Nisu pronađeni listovi" Izlaz iz podzavršetka Ako je "Upit za spremanje lokacije strfile =" Sheets "&" _ "_ & Format (Now ()," yyyymmdd_hhmmss ") _ &" .pdf "strfile = ThisWorkbook.Path &" \ "& strfile myfile = Application.GetSaveAsFilename _ (InitialFileName: = strfile, _ FileFilter: =" PDF datoteke ( *.pdf), *.pdf ", _ Naslov: = "Odaberite naziv mape i datoteke za spremanje kao PDF") Ako je moja datoteka "Netačno" Zatim "spremite kao PDF ThisWorkbook.Sheets (strSheets). Odaberite ActiveSheet.ExportAsFixedFormat Type: = xlTypePDF, Filename: = _ myfile, Quality: = xlQualityStandard, IncludeDocProperties: = True, _ IgnorePrintAreas: = False, OpenAfterPublish: = True Else MsgBox "Nije odabrana datoteka. PDF neće biti spremljen", vbOKOnly, "No File Selected" End If End Sub

Ispis tablica u PDF

Ovaj makro pretvara sve vaše grafikone u jedan PDF - ali ne i vaše objekte grafikona! Pod listovima grafikona mislim na grafikone koji imaju svoju karticu na vašem popisu kartica proračunskih tablica:

Sub PrintChartSheetsToPDF () 'SUBROUTINE: PrintChartSheetsToPDF' DEVELOPER: Ryan Wells 'OPIS: Kombinirajte sve listove grafikona u jedan PDF Dim strSheets () Kao String Dim strfile Kao String Dim ch Kao Objekt, sh Kao Radni list Dim As As As Integer Dimfi Spremi nazive listova grafikona u niz za svaki ch U ActiveWorkbook.Charts ReDim Očuvaj strSheets (icount) strSheets (icount) = ch.Name icount = icount + 1 Sljedeći ch Ako je icount = 0 Tada 'Nema grafikona. Greška pri bušenju MsgBox "PDF se ne može stvoriti jer nisu pronađeni listovi grafikona.",, "Nisu pronađeni listovi grafikona" Izlaz iz podzavršavanja Ako je "Upit za spremanje lokacije strfile =" Charts "&" _ "_ & Format (Now () , "yyyymmdd_hhmmss") _ & ".pdf" strfile = ThisWorkbook.Path & "\" & strfile myfile = Application.GetSaveAsFilename _ (InitialFileName: = strfile, _ FileFilter: = "PDF datoteke ( *.pdf), *.pdf ", _ Title: =" Odaberite naziv mape i datoteke za spremanje kao PDF ") Ako je moja datoteka" False "Zatim 'spremite kao PDF ThisWorkbook.Sheets (strSheets). Odaberite ActiveSheet.ExportAsFixedFormat Type: = xlTypePDF, Filename: = _ myfile, Kvaliteta: = xlQualityStandard, IncludeDocProperties: = True, _ IgnorePrintAreas: = False, OpenAfterPublish: = True Else MsgBox "Nije odabrana datoteka. PDF neće biti spremljen", vbOKOnly, "No File Selected" End If End Sub

Ispis objekata grafikona u PDF

Ovaj makro sprema sve vaše normalne grafikone - objekte grafikona - u jedan PDF. Bez obzira na radnom listu na kojem se nalazi vaš grafikon, bit će zgrabljen i spremljen u PDF.

U konačnom PDF -u bit će samo jedan grafikon po stranici.

Sub PrintChartsObjectsToPDF () 'SUBROUTINE: PrintChartsObjectsToPDF' DEVELOPER: Ryan Wells 'OPIS: Kombinirajte sve objekte grafikona u jedan PDF Dim ws kao radni list, wsTemp kao radni list Dim chrt kao ChartObject Dim tp kao Dug Dimni format datoteke kao str. = False Set wsTemp = Sheets.Add tp = 10 With wsTemp For each ws In ActiveWorkbook.Worksheets If ws.Name = wsTemp.Name Zatim idi na nextws: Za svaki chrt U ws.ChartObjects chrt.Copy wsTemp.Range ("A1") .PasteSpecial Selection.Top = tp Selection.Left = 5 If Selection.TopLeftCell.Row> 1 Zatim ActiveSheet.Rows (Selection.TopLeftCell.Row) .PageBreak = xlPageBreakManual End Ako je tp = tp + Selection.Height + 50 Next ws Završi s 'Upit for save location strfile = "Charts" & "_" _ & Format (Now (), "yyyymmdd \ _hhmmss") _ & ".pdf" strfile = ActiveWorkbook.Path & "\" & strfile myfile = Application.GetSaveAsFilename _ (InitialFileName: = strfile, _ FileFilter: = "PDF datoteke ( *.pdf), *.pdf", _ Naslov: = "Odaberi fol der i naziv datoteke za spremanje kao PDF ") Ako je moja datoteka Netočna Zatim" spremite kao PDF wsTemp.ExportAsFixedFormat Vrsta: = xlTypePDF, Naziv datoteke: = myfile, Kvaliteta: = xlQualityStandard, _ IncludeDocProperties: = True, IgnorePrintAreas: = False, = False, = False, True 'Else' MsgBox "Nije odabrana datoteka. PDF neće biti spremljen ", vbOKOnly," No File Selected "End End If Application.DisplayAlerts = False wsTemp.Delete With Application .ScreenUpdating = True .DisplayAlerts = True End With Exit Sub End Sub

Ako imate bilo kakvih pitanja, postavite ih u odjeljak komentara, gdje ćemo vas Ryan i ja čekati.

Možda će vam se svidjeti i sljedeći vodiči za Excel:

  • Kako ugraditi PDF datoteku u Excel radni list.
  • Excel VBA petlje: Za sljedeće, Učinite dok, Učinite do, Za svaku (s primjerima).
  • Kako snimiti makro u Excelu
  • Kako kombinirati više radnih knjiga u jednu Excel radnu knjigu.
  • Kako pokrenuti makro u Excelu.
  • Kako stvoriti i koristiti dodatak Excel.
  • Upravljanje pogreškama programa Excel VBA
  • Podijelite svaki Excel list u zasebne datoteke
  • Kako uvesti XML datoteku u Excel | Pretvorite XML u Excel

O autoru: Ryan Wells je nuklearni inženjer i profesionalni VBA programer. Objavljuje svoje lako razumljive vodiče za Excel VBA kako bi pomogao drugima u pisanju boljih makronaredbi. Osim podučavanja VBA-e, Ryan je vodeći programer nekoliko dodataka za Excel. Njegove vodiče možete pronaći na WellsR.com.

wave wave wave wave wave