Konvertujte Excel do PDF pomocou VBA - jediný sprievodca, ktorý budete potrebovať

*Toto je príspevok hosťa Ryana Wellsa, kolegu bloggera a vynikajúceho vývojára VBA.*

Ak pracujete s programom Excel, nepochybne ste boli požiadaní o vytvorenie súhrnov svojej práce.

Prehľady tržieb, faktúry, prognózy, plány, čo si len pomyslíte.

Viete, čo majú všetky tieto dokumenty spoločné? Vyzerajú skvele vo forme PDF. Vieš čo ešte? Manažment miluje súbory PDF!

Previesť Excel do PDF

V tomto tutoriále vám ukážem, ako pomocou programu Excel VBA prevádzať všetky druhy objektov programu Excel na súbory PDF:

Každému z makier predstavím nejaký komentár. Tak ich budete môcť rýchlo nájsť, skopírovať do editora VBA a používať ich.

Po spustení ktoréhokoľvek z týchto makier sa zobrazí dialógové okno Uložiť ako s otázkou, kam chcete uložiť súbor PDF. Predvolený názov obsahuje dátum a časovú pečiatku, keď ste makro vykonali vo formáte rrrrmmdd_hhmmss.

Poďme rovno na to.

Tu sú makrá:

Vytlačiť výber do PDF

Tento je môj osobný favorit. Toto makro skonvertuje bunky, ktoré ste aktívne vybrali, do formátu PDF.

Ak máte vybratú iba jednu bunku, makro VBA je dostatočne chytré na to, aby si uvedomilo, že pravdepodobne nechcete previesť iba jednu bunku, a preto vás vyzve, aby ste vybrali rozsah, ktorý chcete previesť:

Sub SubSublectionSelectionToPDF () 'PODPROGRAM: PrintSelectionToPDF' ROZVOJOVAČ: Ryan Wells 'POPIS: Vytlačte aktuálne zvolený rozsah do PDF Dim ThisRng Ako rozsah Dim strfile ako String Dim myfile As Variant If Selection.Count = 1 Then Set ThisRng = Application.InputBox ( "Vyberte rozsah", "Získať rozsah", Typ: = 8) Inak nastavte ThisRng = Koniec výberu ak 'Výzva na uloženie polohy strfile = "Výber" & "_" _ & Formát (Teraz (), "rrrrmmdd_hhmmss" ") _ & ".pdf" strfile = ThisWorkbook.Path & "\" & strfile myfile = Application.GetSaveAsFilename _ (InitialFileName: = strfile, _ FileFilter: = "Súbory PDF ( *.pdf), *.pdf", _ názov: = „Vyberte priečinok a názov súboru, ktorý chcete uložiť ako PDF“) Ak je môj súbor „nepravdivý“, potom uložte ako PDF ThisRng.ExportAsFixedFormat Typ: = xlTypePDF, názov súboru: = _ myfile, kvalita: = xlQualityStandard, IncludeDocProperties: = pravda, _ IgnorePrintAreas: = False, OpenAfterPublish: = True Else MsgBox „Nie je vybratý žiadny súbor. PDF sa neuloží“, vbOKOnly, „Nie je vybraný žiadny súbor“ End If End Sub

Keď vyberiete rozsah a kliknete na tlačidlo OK, zobrazí sa dialógové okno, v ktorom môžete vybrať miesto, kam chcete uložiť súbor PDF.

Automaticky vyberie dátum a čas z hodín vášho systému a pridá ho k názvu súboru.

Vytlačte jednu tabuľku do PDF

Mnoho výkonných používateľov Excelu ukladá svoje údaje do organizovaných tabuliek. V skutočnosti sa samotnému Sumitovi Bansalovi excelové tabuľky páčia natoľko, že ich v Exceli nazýva skrytým pokladom.

Toto makro vytlačí vami vybranú tabuľku do formátu PDF. Keď spustíte makro, zobrazí sa výzva na zadanie názvu tabuľky, ktorú chcete uložiť.

Sub PrintTableToPDF () 'PODPROGRAM: PrintTableToPDF' DEVELOPER: Ryan Wells 'POPIS: Vytlačte tabuľku podľa vlastného výberu do súboru PDF Dim strfile As String Dim myfile As Variant Dim strTable As String, r As Range Application.ScreenUpdating = False' Enter the table meno, ktoré chcete uložiť strTable = InputBox („Aký je názov tabuľky, ktorú chcete uložiť?“, „Zadajte názov tabuľky“) 'Tabuľka, ktorú chcete uložiť If Trim (strTable) = "" Then Exit Sub' Prompt for save umiestnenie strfile = strTable & "_" _ & Format (Now (), "yyyymmdd_hhmmss") _ & ".pdf" strfile = ThisWorkbook.Path & "\" & strfile myfile = Application.GetSaveAsFilename _ (InitialFileName: = strfile, _ FileFilter: = "Súbory PDF ( *.pdf), *.pdf", _ názov: = "Vyberte priečinok a názov súboru, ktorý chcete uložiť ako PDF") Ak je môj súbor "False", potom 'uložte ako rozsah PDF (strTable). Typ Exportujte : = xlTypePDF, Názov súboru: = myfile, Kvalita: = xlQualityStandard, _ IncludeDocProperties: = True, IgnorePrintAreas: = False, OpenAfterPublish: = True Else MsgBox "Nie je vybratý žiadny súbor. PDF nebude uložené ", vbOKOnly," Nie je vybratý žiadny súbor "Koniec, ak Application.DisplayAlerts = False LetsContinue: With Application .ScreenUpdating = True .DisplayAlerts = True End With Exit Sub End Sub Sub

Po zadaní názvu tabuľky a kliknutí na tlačidlo OK sa zobrazí dialógové okno, v ktorom môžete vybrať miesto, kam chcete uložiť súbor PDF.

Automaticky vyberie dátum a čas z hodín vášho systému a pridá ho k názvu súboru.

Vytlačte všetky tabuľky a oddeľte súbory PDF

Ak má vaša tabuľka niekoľko tabuliek a každú musíte uložiť do samostatného PDF, môžete spustiť tento kód VBA.

Po spustení tohto makra sa zobrazí dialógové okno s výzvou na výber priečinka, do ktorého chcete uložiť súbory PDF.

Keď vyberiete priečinok, makro uloží každú tabuľku do formátu PDF s názvom tabuľky, ktorý sa pohodlne zobrazí v názve PDF.

Podtlač PrintAllTablesToPDFs () 'PODPROGRAM: Vývojár PrintAllTablesToPDFs: ROYAL Wells' POPIS: Vytlačte každú tabuľku v tabuľke do iného súboru PDF Dim strTables () Ako reťazec Dim strfile ako reťazec Dim ch ako objekt, sh As pracovný list Dim icount ako Integer Dim myfile Ako Variant Dim tbl As ListObject Dim sht As Worksheet With Application.FileDialog (msoFileDialogFolderPicker) .Title = "Kam chcete uložiť PDF?" .ButtonName = "Uložiť tu" .InitialFileName = ThisWorkbook.Path If .Show = -1 Then 'if OK isPress sfolder = .SelectedItems (1) Else End End If End With For Every sht In ThisWorkbook.Worksheets For each tbl in sht .ListObjects myfile = ThisWorkbook.Name & "„& tbl.Name &“"_ & Format (Now ()," rrrrmmdd_hhmmss ") _ &" .pdf "myfile = priečinok &" \ "& myfile sht.Range (tbl.Name) .ExportAsFixedFormat Typ: = xlTypePDF, názov súboru: = _ môj súbor, kvalita : = xlQualityStandard, IncludeDocProperties: = True, _ IgnorePrintAreas: = False, OpenAfterPublish: = True Next tbl Next sht End Sub

Vytlačte všetky listy do jedného PDF

Neviem ako vy, ale pri mojej práci musíme zachovať kópie PDF takmer všetkých našich tabuliek. Kópie našich tabuliek vo formáte PDF pripájame k našim výpočtom návrhu. Tieto súbory PDF sa konvertovali na mikrofiše a uložili na dlhodobé uchovávanie. Viete, pre prípad, že by došlo k apokalypse.

Ak sa ocitnete v podobnej situácii, je pekné, že môžete automaticky prevádzať všetky listy vo svojej tabuľke do jedného PDF. Tu je makro VBA, ktoré to urobí:

Sub PrintAllSheetsToPDF () 'PODPROGRAM: PrintAllSheetsToPDF' DEVELOPER: Ryan Wells 'POPIS: skombinujte všetky svoje pracovné hárky do jedného PDF Dim strSheets () ako reťazec Dim strfile ako reťazec Dim sh ako pracovný list Dim icount ako Integer Dim myfile ako variant' do poľa pre každé sh v ActiveWorkbook.Worksheets If sh.Visible = xlSheetVisible Then ReDim Preserve strSheets (icount) strSheets (icount) = sh.Name icount = icount + 1 End If Next sh If icount = 0 Then 'No charts found. Chyba pri dierovaní MsgBox "PDF nemožno vytvoriť, pretože neboli nájdené žiadne listy.",, "Neboli nájdené žiadne listy" Ukončiť Sub End If 'Vyzvať na uloženie umiestnenia strfile = "Sheets" & "_" _ & Format (Now (), " yyyymmdd_hhmmss ") _ &" .pdf "strfile = ThisWorkbook.Path &" \ "& strfile myfile = Application.GetSaveAsFilename _ (InitialFileName: = strfile, _ FileFilter: =" PDF Files ( *.pdf), *.pdf ", _ Title: = "Vyberte priečinok a názov súboru, ktorý chcete uložiť ako PDF") Ak je môj súbor "False", potom uložte ako PDF ThisWorkbook.Sheets (strSheets). Vyberte ActiveSheet.ExportAsFixedFormat Typ: = xlTypePDF, názov súboru: = _ myfile, kvalita: = xlQualityStandard, IncludeDocProperties: = True, _ IgnorePrintAreas: = False, OpenAfterPublish: = True Else MsgBox "Nie je vybratý žiadny súbor. PDF sa neuloží", vbOKOnly, "Nie je vybraný žiadny súbor" Koniec, ak je koniec Sub

Vytlačte grafy do formátu PDF

Toto makro konvertuje všetky vaše grafy do jedného PDF - nie však objekty grafu! Pod hárkami grafov mám na mysli grafy, ktoré majú v zozname kariet hárkov vlastnú kartu:

Sub PrintChartSheetsToPDF () 'PODPROGRAM: PrintChartSheetsToPDF' DEVELOPER: Ryan Wells 'POPIS: Skombinujte všetky listy grafu do jedného PDF Dim strSheets () Ako reťazec Dim strfile ako reťazec Dim ch ch ako objekt, sh As pracovný list Dim icount As Integer Dim myfile As Variant Uložiť názvy hárkov grafu do poľa pre každý ch v programe ActiveWorkbook.Charts ReDim Zachovať strSheets (icount) strSheets (icount) = ch.Name icount = icount + 1 Next ch If icount = 0 Then 'Nenašli sa žiadne grafy. Chyba pri dierovaní MsgBox „PDF nemožno vytvoriť, pretože neboli nájdené žiadne grafy.“,, „Nenašli sa žiadne grafy“ Ukončiť Sub End If 'Výzva na uloženie umiestnenia strfile = „Charts“ & „_“ _ & Format (Now () , "yyyymmdd_hhmmss") _ & ".pdf" strfile = ThisWorkbook.Path & "\" & strfile myfile = Application.GetSaveAsFilename _ (InitialFileName: = strfile, _ FileFilter: = "Súbory PDF ( *.pdf), *.pdf ", _ Title: =" Vyberte priečinok a názov súboru, ktorý chcete uložiť ako PDF ") Ak je môj súbor" False ", potom 'uložte ako PDF ThisWorkbook.Sheets (strSheets). Vyberte ActiveSheet.ExportAsFixedFormat Typ: = xlTypePDF, názov súboru: = _ myfile, Kvalita: = xlQualityStandard, IncludeDocProperties: = True, _ IgnorePrintAreas: = False, OpenAfterPublish: = True Else MsgBox "Nie je vybratý žiadny súbor. PDF sa neuloží", vbOKOnly, "Nie je vybraný žiadny súbor" End If End Sub

Vytlačte objekty grafu do formátu PDF

Toto makro ukladá všetky vaše bežné grafy - objekty grafov - do jedného súboru PDF. Bez ohľadu na to, v ktorom pracovnom hárku je váš graf, bude graf prevzatý a uložený do formátu PDF.

V konečnom súbore PDF bude iba jeden graf na stránku.

Sub PrintChartsObjectsToPDF () 'PODPROGRAM: PrintChartsObjectsToPDF' DEVELOPER: Ryan Wells 'POPIS: Skombinujte všetky objekty grafu do jedného PDF Dim ws ako pracovný list, wsTemp ako pracovný list Dim chrt ako ChartObject Dim tp Ako dlhý dim strfile ako String Dim myfile = False Set wsTemp = Sheets.Add tp = 10 With wsTemp For every ws in ActiveWorkbook.Worksheets If ws.Name = wsTemp.Name Then GoTo nextws: For each chrt In ws.ChartObjects chrt.Copy wsTemp.Range ("A1") .PasteSpecial Selection.Top = tp Selection.Left = 5 If Selection.TopLeftCell.Row> 1 Then ActiveSheet.Rows (Selection.TopLeftCell.Row) .PageBreak = xlPageBreakManual End If tp = tp + Selection.Height + 50 Next nextws: Next ws Koniec 'Výzva na uloženie polohy strfile = "Charts" & "_" _ & Format (Now (), "yyyymmdd \ _hhmmss") _ & ".pdf" strfile = ActiveWorkbook.Path & "\" & strfile myfile = Application.GetSaveAsFilename _ (InitialFileName: = strfile, _ FileFilter: = "PDF Files ( *.pdf), *.pdf", _ Title: = "Select Fol názov súboru a názvu uložiť ako PDF ") Ak je môj súbor nepravdivý, potom uložte ako PDF wsTemp.ExportAsFixedFormat Typ: = xlTypePDF, názov súboru: = myfile, kvalita: = xlQualityStandard, _ IncludeDocProperties: = True, IgnorePrintAreas: = False, OpenAfter Skutočný „iný“ MsgBox „Nie je vybratý žiadny súbor. PDF sa neuloží “, vbOKOnly,„ Nie je vybratý žiadny súbor “Koniec, ak Application.DisplayAlerts = False wsTemp.Delete With Application .ScreenUpdating = True .DisplayAlerts = True End With Exit Sub End Sub

Ak máte nejaké otázky, napíšte ich do sekcie komentárov, kde na vás a Ryan budeme čakať.

Tiež by sa vám mohli páčiť nasledujúce návody na Excel:

  • Ako vložiť súbor PDF do pracovného hárka programu Excel.
  • Slučky Excel VBA: Ďalej, Do, Kým, Do, pre každú (s príkladmi).
  • Ako zaznamenať makro v programe Excel
  • Ako skombinovať viac zošitov do jedného zošita programu Excel.
  • Ako spustiť makro v programe Excel.
  • Ako vytvoriť a používať doplnok Excel.
  • Spracovanie chýb programu Excel VBA
  • Rozdeľte každý list programu Excel do samostatných súborov
  • Ako importovať súbor XML do programu Excel | Previesť XML do Excelu

O autorovi: Ryan Wells je jadrový inžinier a profesionálny vývojár VBA. Publikuje svoje ľahko zrozumiteľné tutoriály k Excelu VBA, ktoré pomáhajú druhým písať lepšie makrá. Okrem výučby VBA je Ryan hlavným vývojárom niekoľkých doplnkov programu Excel. Jeho návody nájdete na WellsR.com.

wave wave wave wave wave