*To je gostujoča objava Ryana Wellsa, kolega blogerja in briljantnega razvijalca VBA.*
Če delate z Excelom, ste nedvomno morali ustvariti povzetke svojega dela.
Poročila o prodaji, računi, napovedi, urniki, poimenujte.
Ali veste, kaj je vsem tem dokumentom skupno? Izgledajo odlično v obliki PDF. Veš kaj še? Vodstvo obožuje dokumente PDF!
Pretvorite Excel v PDF
V tej vadnici vam bom pokazal, kako uporabite Excel VBA za pretvorbo vseh vrst Excelovih predmetov v datoteke PDF:
Vsakemu od makrov bom predstavil nekaj komentarjev. Tako jih boste lahko hitro našli, kopirali v urejevalnik VBA in jih uporabljali.
Ko zaženete katerega od teh makrov, se prikaže pogovorno okno Shrani kot, ki vas vpraša, kam želite shraniti svoj PDF. Privzeto ime vključuje datum in časovni žig, ko ste makro izvedli v obliki llllllmmdd_hhmmss.
Pojdimo naravnost.
Tu so makri:
Natisni izbiro v PDF
Ta je moj osebni favorit. Ta makro pretvori celice, ki ste jih aktivno izbrali, v PDF.
Če imate izbrano samo eno celico, je makro VBA dovolj pameten, da se zaveda, da verjetno ne želite pretvoriti samo ene celice, zato vas prosi, da izberete obseg, ki ga želite pretvoriti:
Sub PrintSelectionToPDF () 'SUBROUTINE: PrintSelectionToPDF' DEVELOPER: Ryan Wells 'OPIS: Natisnite trenutno izbrano območje v PDF Zatemni to Rng kot obseg Dim strfile kot niz Namizno datoteko kot varianto Če je Selection.Count = 1 Potem nastavite ThisRng = Application.InputBox ( "Izberite obseg", "Pridobite obseg", Vrsta: = 8) Sicer nastavite ThisRng = Izbor Konec Če "Poziv za shranjevanje lokacije strfile =" Izbor "&" _ "_ & Oblika (Zdaj ()," yyyymmdd_hhmmss ") _ & ".pdf" strfile = ThisWorkbook.Path & "\" & strfile myfile = Application.GetSaveAsFilename _ (InitialFileName: = strfile, _ FileFilter: = "Datoteke PDF ( *.pdf), *.pdf", _ Naslov: = "Izberite ime mape in datoteke za shranjevanje kot PDF") Če je moja datoteka »False« Nato »shrani kot PDF ThisRng.ExportAsFixedFormat Vrsta: = xlTypePDF, Ime datoteke: = _ myfile, Quality: = xlQualityStandard, IncludeDocProperties: = True, _ IgnorePrintAreas: = True, _ IgnorePrintAreas: False, OpenAfterPublish: = True Else MsgBox "Ni izbrane datoteke. PDF ne bo shranjen", vbOKOnly, "No File Selected" End if End Sub
Ko izberete obseg in kliknete V redu, se prikaže pogovorno okno, v katerem lahko izberete, kam želite shraniti PDF.
Samodejno bo izbral datum in čas iz ure vašega sistema in ga dodal imenu datoteke.
Natisnite eno tabelo v PDF
Mnogi uporabniki Excela z zmogljivostjo shranjujejo svoje podatke v organizirane tabele. Pravzaprav je sam Sumit Bansal tako rad v Excelovih mizah, da jih imenuje skrit zaklad v Excelu.
Ta makro natisne tabelo po vaši izbiri v PDF. Ko zaženete makro, vas bo vprašal za ime tabele, ki jo želite shraniti.
Sub PrintTableToPDF () 'SUBROUTINE: PrintTableToPDF' DEVELOPER: Ryan Wells 'OPIS: Natisnite tabelo po vaši izbiri v datoteko PDF Dim strfile As String Dim myfile As Variant Dim strTable As String, r As Range Application.ScreenUpdating = False' Vnesite tabelo. ime, ki ga želite shraniti strTable = InputBox ("Kako se imenuje tabela, ki jo želite shraniti?", "Vnesite ime tabele") 'Tabela, ki jo želite shraniti Če Trim (strTable) = "" Potem zapustite poziv "Shrani" lokacija strfile = strTable & "_" _ & Format (Now (), "yyyymmdd_hhmmss") _ & ".pdf" strfile = ThisWorkbook.Path & "\" & strfile myfile = Application.GetSaveAsFilename _ (InitialFileName: = strfile, _ FileFilter: = "Datoteke PDF ( *.pdf), *.pdf", _ Naslov: = "Izberite ime mape in datoteke za shranjevanje kot PDF") Če je moja datoteka "False" Potem "shrani kot obseg PDF (strTable). ExportAsFixedFormat Type : = xlTypePDF, Ime datoteke: = myfile, Kakovost: = xlQualityStandard, _ IncludeDocProperties: = True, IgnorePrintAreas: = False, OpenAfterPublish: = True Else MsgBox "Ni izbrane datoteke. PDF ne bo izbran. shranjeno ", vbOKOnly," No File selected selected "Končaj, če Application.DisplayAlerts = False LetsContinue: With Application .ScreenUpdating = True .DisplayAlerts = True End z izhodom Sub End Sub
Ko vnesete ime tabele in kliknete V redu, se prikaže pogovorno okno, v katerem lahko izberete, kam želite shraniti PDF.
Samodejno bo izbral datum in čas iz ure vašega sistema in ga dodal imenu datoteke.
Natisnite vse tabele za ločevanje datotek PDF
Če ima vaša preglednica več tabel in morate vsako shraniti v ločen PDF, lahko zaženete to kodo VBA.
Ko zaženete ta makro, se prikaže pogovorno okno, v katerem boste morali izbrati mapo, v katero želite shraniti datoteke PDF.
Ko izberete mapo, bo makro shranil vsako tabelo v PDF z imenom tabele, ki je priročno prikazano v naslovu PDF.
Sub PrintAllTablesToPDFs () 'SUBROUTINE: PrintAllTablesToPDFs' DEVELOPER: Ryan Wells 'OPIS: Natisnite vsako tabelo v preglednici v drugo datoteko PDF Dim strTables () As String Dim strfile As String Dim ch As Object, sh As Delovni list Dim Kot različica Dim tbl Kot ListObject Dim sht Kot delovni list z Application.FileDialog (msoFileDialogFolderPicker) .Title = "Kam želite shraniti svoj PDF?" .ButtonName = "Shrani tukaj" .InitialFileName = Ta delovna knjiga. Pot Če .ListObjects myfile = ThisWorkbook.Name & ""& tbl.Name &""_ & Format (Now ()," yyyymmdd_hhmmss ") _ &" .pdf "myfile = sfolder &" \ "& myfile sht.Range (tbl.Name) .ExportAsFixedFormat Vrsta: = xlTypePDF, Ime datoteke: = _ moja datoteka, Kakovost : = xlQualityStandard, IncludeDocProperties: = True, _ IgnorePrintAreas: = False, OpenAfterPublish: = True Naslednji tbl Naslednji sht Konec Sub
Natisnite vse liste v en PDF
Ne vem za vas, toda pri mojem delu moramo obdržati kopije PDF skoraj vseh preglednic. Kopije naših preglednic v PDF -jih dodamo našim oblikovalskim izračunom. Ti dokumenti PDF so bili včasih pretvorjeni v mikrofiše in obokani za dolgoročno hrambo. Veste, če bi se zgodila apokalipsa.
Če se znajdete v podobni situaciji, je lepo, če lahko vse liste v preglednici samodejno pretvorite v en PDF. Tu je makro VBA, ki bo naredil prav to:
Sub PrintAllSheetsToPDF () 'SUBROUTINE: PrintAllSheetsToPDF' DEVELOPER: Ryan Wells 'OPIS: Združite vse svoje delovne liste v en PDF Dim strSheets () As String Dim strfile As String Dim sh As Worksheet Dim icount As Integer Dim MyFile Sheet As Variant v matriko za vsak sh v ActiveWorkbook.Worksheets If sh.Visible = xlSheetVisible Potem ReDim ohrani strSheets (icount) strSheets (icount) = sh.Name icount = icount + 1 End If Next sh Če icount = 0 Potem 'Ni grafikonov. Napaka pri luknjanju MsgBox "PDF -ja ni mogoče ustvariti, ker ni bilo najdenih listov.",, "No Sheets Found" Zapri Sub End If "Poziv za shranjevanje lokacije strfile =" Sheets "&" _ "_ & Format (Now ()," yyyymmdd_hhmmss ") _ &" .pdf "strfile = ThisWorkbook.Path &" \ "& strfile myfile = Application.GetSaveAsFilename _ (InitialFileName: = strfile, _ FileFilter: =" Datoteke PDF ( *.pdf), *.pdf ", _ Title: = "Izberite mapo in ime datoteke za shranjevanje kot PDF") Če je moja datoteka "False" Nato "shranite kot PDF ThisWorkbook.Sheets (strSheets). Izberite ActiveSheet.ExportAsFixedFormat Type: = xlTypePDF, Filename: = _ myfile, Quality: = xlQualityStandard, IncludeDocProperties: = True, _ IgnorePrintAreas: = False, OpenAfterPublish: = True Else MsgBox "Ni izbrane datoteke. PDF ne bo shranjen", vbOKOnly, "No File Selected" End If End Sub
Natisnite liste grafikonov v PDF
Ta makro pretvori vse vaše liste grafikonov v en PDF, ne pa tudi vaših predmetov grafikona! Z listi grafikonov mislim na grafikone, ki imajo na svojem seznamu zavihkov preglednic svoj zavihek:
Sub PrintChartSheetsToPDF () 'SUBROUTINE: PrintChartSheetsToPDF' DEVELOPER: Ryan Wells 'OPIS: Združite vse liste grafikonov v en PDF Dim strSheets () As String Dim strfile As String Dim ch As Object, sh As Worksheet Dim icount As Integer Dim my Shrani imena listov grafikonov v matriko za vsak ch V ActiveWorkbook.Charts ReDim Ohrani strSheets (icount) strSheets (icount) = ch.Name icount = icount + 1 Naslednji ch Če je icount = 0 Potem 'Ni grafikonov. Napaka pri luknjanju MsgBox "PDF -ja ni mogoče ustvariti, ker ni bilo mogoče najti nobenih listov grafikonov.",, "Ni najdenih listov grafikonov" Zapri podkončnico Če "Poziv za shranjevanje lokacije strfile =" Charts "&" _ "_ & Format (Now () , "yyyymmdd_hhmmss") _ & ".pdf" strfile = ThisWorkbook.Path & "\" & strfile myfile = Application.GetSaveAsFilename _ (InitialFileName: = strfile, _ FileFilter: = "Datoteke PDF ( *.pdf), *.pdf ", _ Title: =" Izberite mapo in ime datoteke za shranjevanje kot PDF ") Če je moja datoteka" False "Nato 'shrani kot PDF ThisWorkbook.Sheets (strSheets). Izberite ActiveSheet.ExportAsFixedFormat Type: = xlTypePDF, Filename: = _ myfile, Kakovost: = xlQualityStandard, IncludeDocProperties: = True, _ IgnorePrintAreas: = False, OpenAfterPublish: = True Drugače MsgBox "Ni izbrane datoteke. PDF ne bo shranjen", vbOKOnly, "No File Selected" End If End Sub
Natisnite predmete grafikona v PDF
Ta makro shrani vse običajne grafikone - objekte grafikonov - v en sam PDF. Ne glede na to, na katerem delovnem listu je grafikon, bo zgrajen in shranjen v PDF.
V končnem dokumentu PDF bo na strani le en grafikon.
Sub PrintChartsObjectsToPDF () 'SUBROUTINE: PrintChartsObjectsToPDF' DEVELOPER: Ryan Wells 'OPIS: Združite vse objekte grafikona v en dokument PDF Dim ws kot delovni list, wsTemp kot delovni list Dim chrt kot ChartObject Dim tp kot dolg dimni format datoteke kot str. = False Set wsTemp = Sheets.Add tp = 10 With wsTemp For Every ws In ActiveWorkbook.Worksheets If ws.Name = wsTemp.Name Potem pojdi na nextws: Za vsak chrt v ws.ChartObjects chrt.Copy wsTemp.Range ("A1") .PasteSpecial Selection.Top = tp Selection.Left = 5 Če je Selection.TopLeftCell.Row> 1 Nato ActiveSheet.Rows (Selection.TopLeftCell.Row) .PageBreak = xlPageBreakManual End Če je tp = tp + Selection.Height + 50 Next ws Končaj z 'Poziv za shranjevanje lokacije strfile = "Charts" & "_" _ & Format (Now (), "yyyymmdd \ _hhmmss") _ & ".pdf" strfile = ActiveWorkbook.Path & "\" & strfile myfile = Application.GetSaveAsFilename _ (InitialFileName: = strfile, _ FileFilter: = "Datoteke PDF ( *.pdf), *.pdf", _ Naslov: = "Izberi fol der in File Name to Save as PDF ") If myfile False Potem 'shrani kot PDF wsTemp.ExportAsFixedFormat Vrsta: = xlTypePDF, Ime datoteke: = myfile, Quality: = xlQualityStandard, _ IncludeDocProperties: = True, IgnorePrintAreas: = False, = False, = False, True 'Else' MsgBox "Ni izbrane datoteke. PDF ne bo shranjen ", vbOKOnly," No File selected selected "Končaj, če Application.DisplayAlerts = False wsTemp.Delete With Application .ScreenUpdating = True .DisplayAlerts = True End z izhodom Sub End Sub
Če imate kakršna koli vprašanja, jih postavite v odsek za komentarje, kjer vas bova z Ryanom čakala.
Morda vam bodo všeč tudi naslednji vaje za Excel:
- Kako vstaviti datoteko PDF v Excelov delovni list
- Zanke Excel VBA: Za naslednje, Do While, Do Until, Za vsako (s primeri).
- Kako posneti makro v Excelu
- Kako združiti več delovnih zvezkov v en Excelov delovni zvezek.
- Kako zagnati makro v Excelu.
- Kako ustvariti in uporabiti dodatek Excel
- Ravnanje z napakami Excel VBA
- Razdelite vsak Excel list v ločene datoteke
- Kako uvoziti datoteko XML v Excel | Pretvorite XML v Excel
O avtorju: Ryan Wells je jedrski inženir in poklicni razvijalec VBA. Objavlja svoje lahko razumljive vaje programa Excel VBA, ki drugim pomagajo pri pisanju boljših makrov. Poleg poučevanja VBA je Ryan vodilni razvijalec več dodatkov Excel. Njegove vaje najdete na WellsR.com.