Konverter Excel til PDF ved hjælp af VBA - den eneste vejledning, du får brug for

Indholdsfortegnelse

*Dette er et gæstepost af Ryan Wells, en medblogger og en strålende VBA -udvikler.*

Hvis du arbejder med Excel, er du utvivlsomt blevet bedt om at lave resuméer af dit arbejde.

Salgsrapporter, fakturaer, prognoser, tidsplaner, you name it.

Ved du, hvad alle disse dokumenter har til fælles? De ser godt ud i PDF -form. Ved du hvad mere? Ledelsen elsker PDF -filer!

Konverter Excel til PDF

I denne vejledning viser jeg dig, hvordan du bruger Excel VBA til at konvertere alle former for Excel -objekter til PDF -filer:

Jeg vil præsentere hver af makroerne med nogle kommentarer. På den måde vil du hurtigt kunne finde dem, kopiere dem til din VBA -editor og bruge dem.

Når du kører en af ​​disse makroer, vises en dialogboks Gem som og spørger dig, hvor du vil gemme din PDF. Standardnavnet indeholder dato og tidsstempel, da du udførte makroen i formatet yyyymmdd_hhmmss.

Lad os komme til det.

Her er makroerne:

Udskriv markering til PDF

Denne er min personlige favorit. Denne makro konverterer de celler, du aktivt har valgt, til en PDF.

Hvis du kun har valgt en celle, er VBA -makroen smart nok til at indse, at du sandsynligvis ikke vil konvertere kun en celle, så den beder dig om at vælge det område, du vil konvertere:

Sub PrintSelectionToPDF () 'SUBROUTINE: PrintSelectionToPDF' UDVIKLER: Ryan Wells 'BESKRIVELSE: Udskriv dit aktuelt valgte område til en PDF Dim ThisRng Som Range Dim strfile As String Dim myfile As Variant If Selection.Count = 1 Indstil derefter ThisRng = Application.InputBox ( "Vælg et område", "Hent område", Type: = 8) Ellers Indstil ThisRng = Valg Slut Hvis 'Spørg om at gemme placering strfile = "Valg" & "_" _ & Format (Nu (), "åååååmm_hhmmss") _ & ".pdf" strfile = ThisWorkbook.Path & "\" & strfile myfile = Application.GetSaveAsFilename _ (InitialFileName: = strfile, _ FileFilter: = "PDF -filer ( *.pdf), *.pdf", _ Title: = "Vælg mappe og filnavn for at gemme som PDF") Hvis minfil "Falsk" Så 'gem som PDF ThisRng.ExportAsFixedFormat Type: = xlTypePDF, Filnavn: = _ myfile, Quality: = xlQualityStandard, IncludeDocProperties: = True, _ IgnorePrintAreas: = Falsk, OpenAfterPublish: = True Else MsgBox "Ingen fil valgt. PDF gemmes ikke", vbOKOnly, "Ingen fil valgt" Afslut hvis slut sub

Når du har valgt området og klikker på OK, viser det en dialogboks, hvor du kan vælge, hvor du vil gemme PDF -filen.

Det vælger automatisk dato og klokkeslæt fra dit systems ur og tilføjer det til filnavnet.

Udskriv en tabel til PDF

Mange Excel -strømbrugere gemmer deres data i organiserede tabeller. Faktisk kan Sumit Bansal selv lide Excel -borde så meget, at han kalder dem en skjult skat i Excel.

Denne makro udskriver en tabel efter eget valg til en PDF. Når du kører makroen, beder den dig om navnet på den tabel, du vil gemme.

Sub PrintTableToPDF () 'SUBROUTINE: PrintTableToPDF' DEVELOPER: Ryan Wells 'BESKRIVELSE: Udskriv en tabel efter eget valg til en PDF Dim strfile As String Dim myfile As Variant Dim strTable As String, r As Range Application.ScreenUpdating = False' Enter the table navn, du vil gemme strTable = InputBox ("Hvad er navnet på den tabel, du vil gemme?", "Indtast tabelnavn") 'Tabel, du vil gemme Hvis Trim (strTable) = "" Afslut derefter Sub' Spørg om at gemme location strfile = strTable & "_" _ & Format (Now (), "yyyymmdd_hhmmss") _ & ".pdf" strfile = ThisWorkbook.Path & "\" & strfile myfile = Application.GetSaveAsFilename _ (InitialFileName: = strfile, _ FileFilter: = "PDF -filer ( *.pdf), *.pdf", _ Titel: = "Vælg mappe og filnavn, der skal gemmes som PDF") Hvis myfile "Falsk" Gem derefter som PDF -område (strTable) .ExportAsFixedFormat Type : = xlTypePDF, filnavn: = myfile, Quality: = xlQualityStandard, _ IncludeDocProperties: = True, IgnorePrintAreas: = False, OpenAfterPublish: = True Else MsgBox "Ingen fil er valgt. PDF bliver ikke gemt ", vbOKOnly," Ingen fil valgt "Afslut hvis Application.DisplayAlerts = False LetsContinue: With Application .ScreenUpdating = True .DisplayAlerts = True End With Exit Sub End Sub Sub

Når du har indtastet navnet på tabellen og klikket på OK, viser den en dialogboks, hvor du kan vælge, hvor du vil gemme PDF -filen.

Det vælger automatisk dato og klokkeslæt fra dit systems ur og tilføjer det til filnavnet.

Udskriv alle tabeller for at adskille PDF -filer

Hvis dit regneark har flere tabeller, og du skal gemme hver enkelt i en separat PDF, kan du køre denne VBA -kode.

Når du kører denne makro, vises en dialogboks, hvor du bliver bedt om at vælge den mappe, hvor du vil gemme dine PDF -filer.

Når du har valgt din mappe, gemmer makroen hver tabel i en PDF -fil med tabelnavnet bekvemt i titlen på PDF -filen.

Sub PrintAllTablesToPDFs () 'SUBROUTINE: PrintAllTablesToPDFs DEVELOPER: Ryan Wells' BESKRIVELSE: Udskriv hver tabel i dit regneark til en anden PDF Dim strTables () As String Dim strfile As String Dim ch As Object, sh As Worksheet Dim icount As Integer Dim myfile As Variant Dim tbl As ListObject Dim sht As Worksheet With Application.FileDialog (msoFileDialogFolderPicker) .Title = "Hvor vil du gemme din PDF?" .ButtonName = "Gem her" .InitialFileName = ThisWorkbook.Path If .Show = -1 Så 'hvis OK trykkes sfolder = .SelectedItems (1) Ellers End End If End With For Every sht In ThisWorkbook.Worksheets For Every tbl In sht .ListObjects myfile = ThisWorkbook.Name & ""& tbl.Name &""_ & Format (Now ()," yyyymmdd_hhmmss ") _ &" .pdf "myfile = sfolder &" \ "& myfile sht.Range (tbl.Name) .ExportAsFixedFormat Type: = xlTypePDF, Filnavn: = _ myfile, Quality : = xlQualityStandard, IncludeDocProperties: = True, _ IgnorePrintAreas: = Falsk, OpenAfterPublish: = True Næste tbl Næste sht End Sub

Udskriv alle ark til en PDF

Jeg ved ikke om dig, men i mit arbejdsområde skal vi beholde PDF -kopier af næsten alle vores regneark. Vi tilføjer PDF -kopierne af vores regneark til vores designberegninger. Disse PDF-filer blev tidligere konverteret til mikrofiche og hvælvet til langvarig opbevaring. Du ved, hvis apokalypsen skete.

Hvis du befinder dig i en lignende situation, er det rart at automatisk kunne konvertere alle arkene i dit regneark til en PDF. Her er en VBA -makro, der gør netop det:

Sub PrintAllSheetsToPDF () 'SUBROUTINE: PrintAllSheetsToPDF' UDVIKLER: Ryan Wells 'BESKRIVELSE: Kombiner alle dine regneark til et PDF Dim strSheets () As String Dim strfile As String Dim sh As Worksheet Dim icount As Integer Dim myfile As Variant' Save Chart Sheet names til et array for hver sh i ActiveWorkbook.Worksheets Hvis sh.Visible = xlSheetVisible Så ReDim Preserve strSheets (icount) strSheets (icount) = sh.Name icount = icount + 1 End If Next sh If icount = 0 Så 'Ingen diagrammer fundet. Punch -fejl MsgBox "En PDF kan ikke oprettes, fordi der ikke blev fundet ark.",, "Ingen ark fundet" Afslut underenden Hvis 'Spørg om at gemme placering strfile = "Sheets" & "_" _ & Format (Now (), " yyyymmdd_hhmmss ") _ &" .pdf "strfile = ThisWorkbook.Path &" \ "& strfile myfile = Application.GetSaveAsFilename _ (InitialFileName: = strfile, _ FileFilter: =" PDF -filer ( *.pdf), *.pdf ", _ Titel: = "Vælg mappe og filnavn for at gemme som PDF") Hvis min fil "Falsk" Så 'gem som PDF ThisWorkbook.Sheets (strSheets) .Vælg ActiveSheet.ExportAsFixedFormat Type: = xlTypePDF, Filnavn: = _ myfile, Quality: = xlQualityStandard, IncludeDocProperties: = True, _ IgnorePrintAreas: = False, OpenAfterPublish: = True Else MsgBox "Ingen fil valgt. PDF gemmes ikke", vbOKOnly, "No File Selected" End If End Sub Sub

Udskriv diagramark til PDF

Denne makro konverterer alle dine diagramark til en PDF - men ikke dine diagramobjekter! Med diagramark mener jeg de diagrammer, der har deres egen fane på din liste over regnearkfaner:

Sub PrintChartSheetsToPDF () 'SUBROUTINE: PrintChartSheetsToPDF' UDVIKLER: Ryan Wells 'BESKRIVELSE: Kombiner alle diagramark til en PDF Dim strSheets () Som String Dim strfile As String Dim ch Som Object, sh Som Worksheet Dim icount As Integer Dim myfile As Variant' Gem diagramarkets navne i et array for hver ch i ActiveWorkbook.Charts ReDim Preserve strSheets (icount) strSheets (icount) = ch.Name icount = icount + 1 Næste ch If icount = 0 Så 'Ingen diagrammer fundet. Stansfejl MsgBox "En PDF kan ikke oprettes, fordi der ikke blev fundet diagramark.", "Ingen diagramark fundet" Afslut underenden Hvis 'Spørg om at gemme placering strfile = "Diagrammer" & "_" _ & Format (Nu () , "yyyymmdd_hhmmss") _ & ".pdf" strfile = ThisWorkbook.Path & "\" & strfile myfile = Application.GetSaveAsFilename _ (InitialFileName: = strfile, _ FileFilter: = "PDF -filer ( *.pdf), *.pdf ", _ Title: =" Vælg mappe og filnavn for at gemme som PDF ") Hvis myfile" Falsk "Så 'gem som PDF ThisWorkbook.Sheets (strSheets) .Vælg ActiveSheet.ExportAsFixedFormat Type: = xlTypePDF, filnavn: = _ myfile, Kvalitet: = xlQualityStandard, IncludeDocProperties: = True, _ IgnorePrintAreas: = Falsk, OpenAfterPublish: = True Else MsgBox "Ingen fil valgt. PDF gemmes ikke", vbOKOnly, "No File Selected" End If End Sub

Udskriv diagramobjekter til PDF

Denne makro gemmer alle dine normale diagrammer - diagramobjekter - i en enkelt PDF. Uanset hvilket regneark dit diagram er på, bliver det taget og gemt i en PDF.

Der vil kun være et diagram pr. Side i den endelige PDF.

Sub PrintChartsObjectsToPDF () 'SUBROUTINE: PrintChartsObjectsToPDF' UDVIKLER: Ryan Wells 'BESKRIVELSE: Kombiner alle diagramobjekter til et PDF Dim ws Som regneark, wsTemp Som regneark Dim chrt Som ChartObject Dim tp Som Long Dim strfile As String Dim myfil = Falsk sæt wsTemp = Sheets.Add tp = 10 With wsTemp For each ws In ActiveWorkbook.Worksheets If ws.Name = wsTemp.Name Then GoTo nextws: For Every chrt In ws.ChartObjects chrt.Copy wsTemp.Range ("A1") .PasteSpecial Selection.Top = tp Selection.Left = 5 If Selection.TopLeftCell.Row> 1 Herefter ActiveSheet.Rows (Selection.TopLeftCell.Row) .PageBreak = xlPageBreakManual End Hvis tp = tp + Selection.Height + 50 Next nextws: Next ws Slut med 'Spørg om at gemme placering strfile = "Diagrammer" & "_" _ & Format (Nu (), "yyyymmdd \ _hhmmss") _ & ".pdf" strfile = ActiveWorkbook.Path & "\" & strfile myfile = Application.GetSaveAsFilename _ (InitialFileName: = strfile, _ FileFilter: = "PDF -filer ( *.pdf), *.pdf", _ Title: = "Vælg Fol der og filnavn, der skal gemmes som PDF ") Hvis myfile False Så 'gem som PDF wsTemp.ExportAsFixedFormat Type: = xlTypePDF, Filnavn: = myfile, Quality: = xlQualityStandard, _ IncludeDocProperties: = True, IgnorePrintAreas: = False, OpenAfter True 'Else' MsgBox "Ingen fil er valgt. PDF gemmes ikke ", vbOKOnly," Ingen fil valgt "Afslut hvis Application.DisplayAlerts = Falsk wsTemp.Delete With Application .ScreenUpdating = True .DisplayAlerts = True End With Exit Sub End Sub Sub

Hvis du har spørgsmål, så slip dem i kommentarfeltet, hvor Ryan og jeg venter der på dig.

Du kan også lide følgende Excel -selvstudier:

  • Sådan integreres en PDF -fil i et Excel -regneark.
  • Excel VBA -sløjfer: Til næste, gør mens, gør indtil, for hver (med eksempler).
  • Sådan optager du en makro i Excel
  • Sådan kombineres flere projektmapper til en Excel -projektmappe.
  • Sådan køres en makro i Excel.
  • Sådan oprettes og bruges et Excel-tilføjelsesprogram.
  • Excel VBA fejlhåndtering
  • Opdel hvert Excel -ark i separate filer
  • Sådan importeres XML -fil til Excel | Konverter XML til Excel

Om forfatteren: Ryan Wells er en atomingeniør og professionel VBA -udvikler. Han udgiver sine letforståelige Excel VBA -øvelser for at hjælpe andre med at skrive bedre makroer. Ud over at undervise i VBA er Ryan hovedudvikler af flere Excel-tilføjelser. Du kan finde hans tutorials på WellsR.com.

Du vil bidrage til udviklingen af ​​hjemmesiden, at dele siden med dine venner

wave wave wave wave wave