Konvertuokite „Excel“ į PDF naudodami VBA - vienintelis vadovas, kurio jums reikės

*Tai svečio dienoraščio rašytojo Ryan Wells ir puikus VBA kūrėjas.*

Jei dirbate su „Excel“, neabejotinai jūsų buvo paprašyta sudaryti savo darbo santraukas.

Pardavimų ataskaitos, sąskaitos faktūros, prognozės, tvarkaraščiai, jūs jį pavadinate.

Ar žinote, kas bendro tarp visų šių dokumentų? Jie puikiai atrodo PDF formatu. Žinai ką dar? Administracija mėgsta PDF failus!

Konvertuokite „Excel“ į PDF

Šioje pamokoje parodysiu, kaip naudoti „Excel VBA“, kad visų rūšių „Excel“ objektai būtų konvertuoti į PDF:

Kiekvienai makrokomandai pateiksiu keletą komentarų. Tokiu būdu galėsite greitai juos rasti, nukopijuoti į VBA redaktorių ir naudoti.

Kai vykdote bet kurią iš šių makrokomandų, pasirodys dialogo langas Įrašyti kaip, kuriame bus klausiama, kur norite išsaugoti PDF. Numatytasis pavadinimas apima datą ir laiko žymę, kai vykdėte makrokomandą formatu yyyymmdd_hhmmss.

Eikime tiesiai į tai.

Štai makrokomandos:

Spausdinimo pasirinkimas į PDF

Šis yra mano asmeninis mėgstamiausias. Ši makrokomanda aktyviai pasirinktas ląsteles pavers PDF formatu.

Jei pasirinkote tik vieną langelį, VBA makrokomanda yra pakankamai protinga, kad suprastų, jog tikriausiai nenorite konvertuoti tik vienos ląstelės, todėl ji prašo pasirinkti diapazoną, kurį norite konvertuoti:

Sub PrintSelectionToPDF () 'SUBROUTINE: PrintSelectionToPDF' DEVELOPER: Ryan Wells 'APRAŠYMAS: Atspausdinkite šiuo metu pasirinktą diapazoną į PDF Dim. "Pasirinkite diapazoną", "Gauti diapazoną", tipas: = 8) Kitu atveju nustatykite šįRng = Pasirinkimo pabaiga, jei bus raginama išsaugoti vietą strfile = "Pasirinkimas" & "_" _ & Formatas (dabar (), "yyyymmdd_hhmmss") _ & ".pdf" strfile = ThisWorkbook.Path & "\" & strfile myfile = Application.GetSaveAsFilename _ (InitialFileName: = strfile, _ FileFilter: = "PDF failai ( *.pdf), *.pdf", _ Pavadinimas: = "Pasirinkite aplanką ir failo pavadinimą, kad išsaugotumėte kaip PDF") Jei mano failas "False", tada išsaugokite kaip PDF ThisRng.ExportAsFixedFormat Type: = xlTypePDF, Filename: = _ myfile, Quality: = xlQualityStandard, IncludeDocProperties: = True, _ IgnorePrintAreas: = Netiesa, OpenAfterPublish: = Tiesa Else MsgBox "Nepasirinktas failas. PDF nebus išsaugotas", vbOKOnly, "Nepasirinktas failas" Pabaiga jei pabaiga

Kai pasirinksite diapazoną ir spustelėsite Gerai, bus parodytas dialogo langas, kuriame galėsite pasirinkti, kur norite išsaugoti PDF.

Jis automatiškai parinks datą ir laiką iš jūsų sistemos laikrodžio ir pridės jį prie failo pavadinimo.

Atspausdinkite vieną lentelę į PDF

Daugelis „Excel“ naudotojų saugo savo duomenis į organizuotas lenteles. Tiesą sakant, pačiam Sumitui Bansalui patinka „Excel“ lentelės, todėl jis jas vadina paslėptu lobiu „Excel“.

Ši makrokomanda spausdina jūsų pasirinktą lentelę į PDF. Kai paleisite makrokomandą, ji paprašys nurodyti lentelės, kurią norite išsaugoti, pavadinimą.

Sub PrintTableToPDF () 'SUBROUTINE: PrintTableToPDF' DEVELOPER: Ryan Wells 'APRAŠYMAS: Atspausdinkite pasirinktą lentelę į PDF Dim strfile kaip String Dim myfile As Variant Dim strTable As String, r As Range Application.ScreenUpdating = False' Įveskite lentelę vardas, kurį norite išsaugoti strTable = InputBox ("Koks lentelės, kurią norite išsaugoti, pavadinimas?", "Įveskite lentelės pavadinimą") 'Lentelė, kurią norite išsaugoti, jei Trim (strTable) = "" Tada išeikite iš eilutės Išsaugoti vieta strfile = strTable & "_" _ & Format (Now (), "yyyymmdd_hhmmss") _ & ".pdf" strfile = ThisWorkbook.Path & "\" & strfile myfile = Application.GetSaveAsFilename _ (InitialFileName: = strfile, _ FileFilter: = "PDF failai ( *.pdf), *.pdf", _ Title: = "Pasirinkite aplanką ir failo pavadinimą, kad išsaugotumėte kaip PDF") Jei myfile "False", tada išsaugokite kaip PDF diapazoną (strTable) .ExportAsFixedFormat Type :) Išsaugotas ", vbOKOnly" Nepasirinktas failas "Pabaiga, jei programa.DisplayAlerts = False LetsContinue: Su Application .ScreenUpdating = Tiesa .DisplayAlerts = Tikra pabaiga su išėjimu Sub End Sub

Įvedę lentelės pavadinimą ir spustelėję Gerai, pamatysite dialogo langą, kuriame galėsite pasirinkti, kur norite išsaugoti PDF.

Jis automatiškai parinks datą ir laiką iš jūsų sistemos laikrodžio ir pridės jį prie failo pavadinimo.

Spausdinkite visas lenteles, kad atskirtumėte PDF failus

Jei skaičiuoklėje yra kelios lentelės ir kiekvieną iš jų reikia išsaugoti atskirame PDF faile, galite paleisti šį VBA kodą.

Kai paleisite šią makrokomandą, pasirodys dialogo langas, kuriame bus prašoma pasirinkti aplanką, kuriame norite išsaugoti PDF failus.

Kai pasirinksite aplanką, makrokomanda išsaugos kiekvieną lentelę PDF formatu, o lentelės pavadinimas patogiai pasirodys PDF pavadinime.

Sub PrintAllTablesToPDFs () "SUBROUTINE: PrintAllTablesToPDFs" Kūrėjas: Ryan Wells "APRAŠYMAS: Spausdinkite kiekvieną lentelę savo skaičiuoklėje į kitą PDF Dim strTables () Kaip String Dim strfile Kaip String Dim ch As Object, sh As Workheet Dim icile As Integer Dimf Kaip variantas Dim tbl Kaip ListObject Dim sht kaip darbalapis su Application.FileDialog (msoFileDialogFolderPicker) .Title = "Kur norite išsaugoti PDF?" " .ListObjects myfile = ThisWorkbook.Name & ""& tbl.Vardas &""_ & Formatas (dabar ()," yyyymmdd_hhmmss ") _ &" .pdf "myfile = sfolder &" \ "& myfile sht.Range (tbl.Name) .ExportAsFixedFormat Type: = xlTypePDF, Failo pavadinimas: = _ myfile, Quality : = xlQualityStandard, IncludeDocProperties: = Tiesa, _ IgnorePrintAreas: = False, OpenAfterPublish: = Tiesa Kitas tbl Kitas sht Pabaiga

Spausdinkite visus lapus į vieną PDF

Nežinau, kaip jūs, bet savo darbe turime išlaikyti beveik visų mūsų skaičiuoklių PDF kopijas. Prie skaičiavimų pridedame skaičiuoklių PDF kopijas. Šie PDF failai anksčiau buvo konvertuojami į mikrofišą ir skliautai, kad jie būtų išsaugoti ilgą laiką. Žinai, jei apokalipsė įvyktų.

Jei atsidūrėte panašioje situacijoje, malonu, kad galite automatiškai konvertuoti visus skaičiuoklės lapus į vieną PDF. Štai VBA makrokomanda, kuri tai padarys:

Sub PrintAllSheetsToPDF () 'SUBROUTINE: PrintAllSheetsToPDF' DEVELOPER: Ryan Wells 'APRAŠYMAS: Sujunkite visus savo darbalapius į vieną PDF Dim strSheets () Kaip String Dim strfile Kaip String Dim sh As Workheet Dim icount As Integer Dim myfile As Variant' į masyvą už kiekvieną „ActiveWorkbook“. Darbo lapai Jei sh.Visible = xlSheetVisible Tada „ReDim“ išsaugokite strSheets (icount) strSheets (icount) = sh.Name icount = icount + 1 Pabaiga, jei Kitas sh If icount = 0 Tada 'Diagramų nerasta. Perforavimo klaida „MsgBox“ „PDF negalima sukurti, nes nerasta jokių lapų.“, „Nerasta jokių lapų“ Išeiti iš antrinės pabaigos, jei raginama išsaugoti vietą strfile = "Sheets" & "_" _ & Format (Now (), " yyyymmdd_hhmmss ") _ &" .pdf "strfile = ThisWorkbook.Path &" \ "& strfile myfile = Application.GetSaveAsFilename _ (InitialFileName: = strfile, _ FileFilter: =" PDF failai ( *.pdf), *.pdf ", _ Title: = "Pasirinkite aplanką ir failo pavadinimą, kad išsaugotumėte kaip PDF") Jei mano failas "False", tada išsaugokite kaip PDF ThisWorkbook.Sheets (strSheets). Pasirinkite ActiveSheet.ExportAsFixedFormat Type: = xlTypePDF, Filename: = _ myfile, Quality: = xlQualityStandard, IncludeDocProperties: = Tiesa, _ IgnorePrintAreas: = False, OpenAfterPublish: = Tiesa, kita „MsgBox“ „Failas nepasirinktas. PDF nebus išsaugotas“, vbOKOnly, „Nepasirinktas failas“ Pabaiga, jei pabaiga

Spausdinti diagramos lapus į PDF

Ši makrokomanda konvertuoja visus jūsų diagramos lapus į vieną PDF, bet ne diagramos objektus! Diagramų lapuose turiu omenyje diagramas, kurios turi skirtuką jūsų skaičiuoklės skirtukų sąraše:

Sub PrintChartSheetsToPDF () 'SUBROUTINE: PrintChartSheetsToPDF' DEVELOPER: Ryan Wells 'APRAŠYMAS: Sujunkite visus diagramos lapus į vieną PDF Dim strSheets () Kaip String Dim strfile Kaip String Dim ch As Object, sh As Workheet Dim icount As Integer Dimfile Išsaugokite diagramos lapų pavadinimus į masyvą kiekvienam „ActiveWorkbook“ ch. Punch error MsgBox "PDF negalima sukurti, nes diagramos lakštų nerasta.", "Diagramos lapų nerasta" Išeiti iš antrinės pabaigos, jei raginama išsaugoti vietą strfile = "Charts" & "_" _ & Format (Now () , "yyyymmdd_hhmmss") _ & ".pdf" strfile = ThisWorkbook.Path & "\" & strfile myfile = Application.GetSaveAsFilename _ (InitialFileName: = strfile, _ FileFilter: = "PDF failai ( *.pdf), *.pdf ", _ Title: =" Pasirinkite aplanką ir failo pavadinimą, kad išsaugotumėte kaip PDF ") Jei mano failas" False ", tada išsaugokite kaip PDF ThisWorkbook.Sheets (strSheets). Pasirinkite ActiveSheet.ExportAsFixedFormat Type: = xlTypePDF, Filename: = _ myfile, Kokybė: = xlQualityStandard, IncludeDocProperties: = Tiesa, _ IgnorePrintAreas: = Netiesa, OpenAfterPublish: = Tiesa, kita „MsgBox“ „Failas nepasirinktas. PDF nebus išsaugotas“, vbOKOnly, „Nepasirinktas failas“ Pabaiga, jei pabaiga

Spausdinti diagramos objektus į PDF

Ši makrokomanda išsaugo visas įprastas diagramas - diagramos objektus - į vieną PDF failą. Nepriklausomai nuo to, kuriame darbalapyje yra jūsų diagrama, ji bus paimta ir išsaugota PDF faile.

Galutinio PDF failo puslapyje bus tik viena diagrama.

Sub PrintChartsObjectsToPDF () 'SUBROUTINE: PrintChartsObjectsToPDF' DEVELOPER: Ryan Wells 'APRAŠYMAS: Sujunkite visus diagramos objektus į vieną PDF Dim ws kaip darbalapį, wsTemp kaip darbalapį Dim chrt As ChartObject Dim tp As Long Dim strfile As String Dimf. = False Set wsTemp = Sheets.Add tp = 10 Su wsTemp kiekvienam ws ActiveWorkbook.Worksheets If ws.Name = wsTemp.Name Tada GoTo nextws: Už kiekvieną chrt In ws.ChartObjects chrt.Copy wsTemp.Range ("A1") .PasteSpecial Selection.Top = tp Selection.Left = 5 If Selection.TopLeftCell.Row> 1 Tada ActiveSheet.Rows (Selection.TopLeftCell.Row) .PageBreak = xlPageBreakManual End Jei tp = tp + Selection.Height + 50 Kitos sekančios: Kitas ws Pabaigti „Išrašyti vietą strfile =" Charts "&" _ "_ & Format (Now ()," yyyymmdd \ _hhmmss ") _ &" .pdf "strfile = ActiveWorkbook.Path &" \ "& strfile myfile = Application.GetSaveAsFilename _ (InitialFileName: = strfile, _ FileFilter: = "PDF failai ( *.pdf), *.pdf", _ Title: = "Pasirinkite Fol der ir failo pavadinimą išsaugoti kaip PDF ") Jei mano failas klaidingas, tada įrašykite kaip PDF Tiesa „Kita“ „MsgBox“ Nepasirinktas failas. PDF nebus išsaugotas ", vbOKOnly" Nepasirinktas failas "Pabaikite, jei programa.DisplayAlerts = False wsTemp.Delete With Application .ScreenUpdating = True .DisplayAlerts = Tikroji pabaiga su išėjimu Sub End Sub

Jei turite klausimų, rašykite juos komentarų skiltyje, kur mes su Ryanu jūsų lauksime.

Jums taip pat gali patikti šios „Excel“ pamokos:

  • Kaip įterpti PDF failą į „Excel“ darbalapį.
  • „Excel VBA“ kilpos: kitam, darykite, darykite iki, kiekvienam (su pavyzdžiais).
  • Kaip įrašyti makrokomandą „Excel“
  • Kaip sujungti kelias darbaknyges į vieną „Excel“ darbaknygę.
  • Kaip paleisti makrokomandą „Excel“.
  • Kaip sukurti ir naudoti „Excel“ priedą.
  • „Excel VBA“ klaidų tvarkymas
  • Padalinkite kiekvieną „Excel“ lapą į atskirus failus
  • Kaip importuoti XML failą į „Excel“ | Konvertuokite XML į „Excel“

Apie autorių: Ryanas Wellsas yra branduolinis inžinierius ir profesionalus VBA kūrėjas. Jis skelbia savo lengvai suprantamas „Excel VBA“ pamokas, kad padėtų kitiems parašyti geresnes makrokomandas. Be VBA dėstymo, Ryanas yra pagrindinis kelių „Excel“ priedų kūrėjas. Jo pamokas galite rasti WellsR.com.

Padėsite svetainės plėtrą, dalintis puslapį su draugais

wave wave wave wave wave