Pārveidojiet Excel uz PDF, izmantojot VBA - vienīgais ceļvedis, kas jums būs nepieciešams

Satura rādītājs

*Šis ir Ryan Wells, kolēģis blogeris un izcils VBA izstrādātājs.

Ja strādājat ar Excel, jums neapšaubāmi ir lūgts izveidot sava darba kopsavilkumus.

Pārdošanas atskaites, rēķini, prognozes, grafiki, jūs to nosaucat.

Vai jūs zināt, kas visiem šiem dokumentiem ir kopīgs? Tie izskatās lieliski PDF formātā. Zini, ko vēl? Vadībai patīk PDF faili!

Pārvērst Excel uz PDF

Šajā apmācībā es parādīšu, kā izmantot Excel VBA, lai visa veida Excel objektus pārvērstu PDF failos:

Es iepazīstināšu ar katru makro ar dažiem komentāriem. Tādā veidā jūs varēsit tos ātri atrast, nokopēt savā VBA redaktorā un izmantot.

Palaižot kādu no šiem makro, parādīsies dialoglodziņš Saglabāt kā, jautājot, kur vēlaties saglabāt PDF failu. Noklusējuma nosaukums ietver datumu un laika zīmogu, kad izpildījāt makro formātā yyyymmdd_hhmmss.

Ķersimies pie tā.

Šeit ir makro:

Drukāt atlasi PDF formātā

Šis ir mans personīgais favorīts. Šis makro pārvērsīs jūsu aktīvi atlasītās šūnas PDF formātā.

Ja esat izvēlējies tikai vienu šūnu, VBA makro ir pietiekami gudrs, lai saprastu, ka jūs, iespējams, nevēlaties konvertēt tikai vienu šūnu, tāpēc tiek lūgts atlasīt diapazonu, kuru vēlaties konvertēt:

Sub PrintSelectionToPDF () 'SUBROUTINE: PrintSelectionToPDF' DEVELOPER: Ryan Wells 'APRAKSTS: Izdrukājiet savu atlasīto diapazonu PDF formātā. Dim. "Atlasiet diapazonu", "Iegūt diapazonu", ierakstiet: = 8) Citādi iestatiet šoRng = Atlases beigas Ja 'Lūgums saglabāt atrašanās vietu strfile = "Atlase" & "_" _ & Format (Now (), "yyyymmdd_hhmmss") _ & ".pdf" strfile = ThisWorkbook.Path & "\" & strfile myfile = Application.GetSaveAsFilename _ (InitialFileName: = strfile, _ FileFilter: = "PDF faili ( *.pdf), *.pdf", _ Nosaukums: = "Atlasiet mapi un faila nosaukumu, lai saglabātu kā PDF") Ja myfile "False", tad saglabājiet kā PDF ThisRng.ExportAsFixedFormat Type: = xlTypePDF, Filename: = _ myfile, Quality: = xlQualityStandard, IncludeDocProperties: = True, _ IgnorePrintAreas: = False, OpenAfterPublish: = True Else MsgBox "Nav atlasīts fails. PDF netiks saglabāts", vbOKOnly, "Nav atlasīts fails" Beigt, ja beigas Sub

Kad esat izvēlējies diapazonu un noklikšķinājis uz Labi, tiek parādīts dialoglodziņš, kurā varat izvēlēties, kur vēlaties saglabāt PDF failu.

Tas automātiski izvēlēsies datumu un laiku no jūsu sistēmas pulksteņa un pievienos to faila nosaukumam.

Izdrukājiet vienu tabulu PDF formātā

Daudzi Excel enerģijas lietotāji savus datus glabā organizētās tabulās. Patiesībā pašam Sumitam Bansālam tik ļoti patīk Excel tabulas, ka viņš tās sauc par slēptu dārgumu programmā Excel.

Šis makro izdrukā jūsu izvēlētu tabulu PDF failā. Palaižot makro, tas prasīs saglabāt tās tabulas nosaukumu, kuru vēlaties saglabāt.

Sub PrintTableToPDF () 'SUBROUTINE: PrintTableToPDF' DEVELOPER: Ryan Wells 'APRAKSTS: Izdrukājiet izvēlēto tabulu PDF Dim strfile kā String Dim myfile As Variant Dim strTable As String, r Kā Range Application.ScreenUpdating = False' Ievadiet tabulu nosaukums, kuru vēlaties saglabāt atrašanās vieta strfile = strTable & "_" _ & Format (Now (), "yyyymmdd_hhmmss") _ & ".pdf" strfile = ThisWorkbook.Path & "\" & strfile myfile = Application.GetSaveAsFilename _ (InitialFileName: = strfile, _ FileFilter: = "PDF faili ( *.pdf), *.pdf", _ Title: = "Atlasiet mapi un faila nosaukumu, lai tos saglabātu kā PDF") Ja mans fails "Nepareizs", tad saglabājiet kā PDF diapazonu (strTable) .ExportAsFixedFormat Type : = xlTypePDF, faila nosaukums: = myfile, Quality: = xlQualityStandard, _ IncludeDocProperties: = True, IgnorePrintAreas: = False, OpenAfterPublish: = True Else MsgBox "Nav atlasīts fails. PDF netiks saglabāts ", vbOKOnly," Nav atlasīts neviens fails "Beigt, ja Application.DisplayAlerts = False LetsContinue: Ar Application .ScreenUpdating = True .DisplayAlerts = Patiess beigas ar iziešanu Sub End Sub

Kad esat ievadījis tabulas nosaukumu un noklikšķinājis uz Labi, tiek parādīts dialoglodziņš, kurā varat izvēlēties, kur vēlaties saglabāt PDF failu.

Tas automātiski izvēlēsies datumu un laiku no jūsu sistēmas pulksteņa un pievienos to faila nosaukumam.

Drukājiet visas tabulas, lai atdalītu PDF failus

Ja jūsu izklājlapā ir vairākas tabulas un katra no tām ir jāsaglabā atsevišķā PDF failā, varat palaist šo VBA kodu.

Palaižot šo makro, tiks parādīts dialoglodziņš, kurā tiks lūgts atlasīt mapi, kurā vēlaties saglabāt PDF failus.

Kad esat izvēlējies mapi, makro katru tabulu saglabās PDF failā, un tās nosaukumā ērti būs redzams tabulas nosaukums.

Sub PrintAllTablesToPDFs () 'SUBROUTINE: PrintAllTablesToPDFs' DEVELOPER: Ryan Wells 'APRAKSTS: Izdrukājiet katru tabulu savā izklājlapā uz citu PDF Dim strTables Kā variants Dim tbl Kā ListObject Dim sht kā darblapa ar Application.FileDialog (msoFileDialogFolderPicker) .Title = "Kur vēlaties saglabāt PDF?" .ButtonName = "Saglabāt šeit" .InitialFileName = Šī darba grāmata. Ceļš Ja .Show = -1 Tad 'ja OK tiek nospiests .ListObjects myfile = ThisWorkbook.Name & ""& tbl.Vārds &""_ & Format (Now ()," yyyymmdd_hhmmss ") _ &" .pdf "myfile = sfolder &" \ "& myfile sht.Range (tbl.Name) .ExportAsFixedFormat Type: = xlTypePDF, Faila nosaukums: = _ myfile, Quality : = xlQualityStandard, IncludeDocProperties: = True, _ IgnorePrintAreas: = False, OpenAfterPublish: = True Next tbl Next sht End sub

Drukājiet visas lapas vienā PDF failā

Es nezinu, kā jūs, bet manā darbā mums ir jāsaglabā gandrīz visu mūsu izklājlapu PDF kopijas. Mēs pievienojam mūsu izklājlapu PDF kopijas mūsu dizaina aprēķiniem. Šie PDF faili agrāk tika pārveidoti par mikrofišu un glabāti velvē, lai saglabātu tos ilgtermiņā. Ziniet, ja notiktu apokalipse.

Ja atrodaties līdzīgā situācijā, ir patīkami, ja visas izklājlapas lapas var automātiski pārvērst vienā PDF failā. Šeit ir VBA makro, kas to darīs:

Sub PrintAllSheetsToPDF () 'SUBROUTINE: PrintAllSheetsToPDF' DEVELOPER: Ryan Wells 'APRAKSTS: Apvienojiet visas savas darblapas vienā PDF Dim strSheets () Kā virknes Dim strfile Kā virkņu Dim sh kā darblapas Dim icount kā vesels skaitlis Diafragmas nosaukums uz masīvu par katru sh ActiveWorkbook. Štancēšanas kļūda MsgBox "PDF failu nevar izveidot, jo nav atrastas lapas.", "Nav atrasta neviena lapa" Iziet no apakšdaļas beigām, ja tiek prasīts saglabāt atrašanās vietu strfile = "Sheets" & "_" _ & Format (Now (), " yyyymmdd_hhmmss ") _ &" .pdf "strfile = ThisWorkbook.Path &" \ "& strfile myfile = Application.GetSaveAsFilename _ (InitialFileName: = strfile, _ FileFilter: =" PDF faili ( *.pdf), *.pdf ", _ Title: = "Atlasiet mapi un faila nosaukumu, lai saglabātu kā PDF") Ja myfile "False", pēc tam saglabājiet kā PDF ThisWorkbook.Sheets (strSheets) .Izvēlieties ActiveSheet.ExportAsFixedFormat Type: = xlTypePDF, Filename: = _ myfile, Quality: = xlQualityStandard, IncludeDocProperties: = True, _ IgnorePrintAreas: = False, OpenAfterPublish: = True Els MsgBox "Nav atlasīts fails. PDF netiks saglabāts", vbOKOnly, "Nav atlasīts fails" Beigt, ja beigu apakšdaļa

Drukāt diagrammas lapas PDF formātā

Šis makro pārvērš visas jūsu diagrammu lapas vienā PDF failā, bet ne diagrammas objektus! Ar diagrammu lapām es domāju diagrammas, kurām jūsu izklājlapu cilņu sarakstā ir sava cilne:

Sub PrintChartSheetsToPDF () 'SUBROUTINE: PrintChartSheetsToPDF' DEVELOPER: Ryan Wells 'APRAKSTS: Apvienojiet visas diagrammas lapas vienā PDF Dim strSheets () Kā virknes Dim strfile Kā virkne Dim ch kā objekts, sh kā darblapas izmērs kā vesels lieluma lielums Saglabājiet diagrammas lapu nosaukumus masīvā katrai sadaļai ActiveWorkbook. Diagrammas ReDim Saglabājiet strSheets (icount) strSheets (icount) = ch.Name icount = icount + 1 Nākamā ch If icount = 0 Tad 'Diagrammas nav atrastas. Štancēšanas kļūda MsgBox "PDF failu nevar izveidot, jo diagrammas lapas nav atrastas.", "Diagrammas lapas nav atrastas" Iziet apakšdaļas beigas Ja tiek prasīts saglabāt atrašanās vietu strfile = "Charts" & "_" _ & Format (Now () , "yyyymmdd_hhmmss") _ & ".pdf" strfile = ThisWorkbook.Path & "\" & strfile myfile = Application.GetSaveAsFilename _ (InitialFileName: = strfile, _ FileFilter: = "PDF faili ( *.pdf), *.pdf ", _ Title: =" Atlasiet mapi un faila nosaukumu, lai saglabātu kā PDF ") Ja myfile" False ", pēc tam saglabājiet kā PDF formātu ThisWorkbook.Sheets (strSheets). Atlasiet ActiveSheet.ExportAsFixedFormat Type: = xlTypePDF, Filename: = _ myfile, Kvalitāte: = xlQualityStandard, IncludeDocProperties: = True, _ IgnorePrintAreas: = False, OpenAfterPublish: = True Els MsgBox "Nav atlasīts fails. PDF netiks saglabāts", vbOKOnly, "Nav atlasīts fails" beigas Ja beigas

Drukāt diagrammas objektus PDF formātā

Šis makro saglabā visas parastās diagrammas - diagrammas objektus - vienā PDF failā. Neatkarīgi no tā, kurā darblapā atrodas jūsu diagramma, tā tiks paņemta un saglabāta PDF failā.

Galīgajā PDF failā katrā lapā būs tikai viena diagramma.

Sub PrintChartsObjectsToPDF () 'SUBROUTINE: PrintChartsObjectsToPDF' DEVELOPER: Ryan Wells 'APRAKSTS: Apvienojiet visus diagrammas objektus vienā PDF Dim ws kā darblapu, wsTemp kā darblapu Dim chrt Kā ChartObject Dim tp As Long Dim strfile As String Dimf. = False Set wsTemp = Sheets.Add tp = 10 Ar wsTemp katram ws ActiveWorkbook.Worksheets If ws.Name = wsTemp.Name Tad GoTo nextws: Par katru chrt In ws.ChartObjects chrt.Copy wsTemp.Range ("A1") .PasteSpecial Selection.Top = tp Selection.Left = 5 If Selection.TopLeftCell.Row> 1 Pēc tam ActiveSheet.Rows (Selection.TopLeftCell.Row) .PageBreak = xlPageBreakManual End Ja tp = tp + Selection.Height + 50 Nākamās nākamās ws beidzas ar 'Prompt for save location strfile = "Charts" & "_" _ & Format (Now (), "yyyymmdd \ _hhmmss") _ & ".pdf" strfile = ActiveWorkbook.Path & "\" & strfile myfile = Application.GetSaveAsFilename _ (InitialFileName: = strfile, _ FileFilter: = "PDF faili ( *.pdf), *.pdf", _ Title: = "Atlasīt Fol der un faila nosaukums, lai tos saglabātu kā PDF ") Ja myfile False, tad" saglabāt kā PDF wsTemp.ExportAsFixedFormat Type: = xlTypePDF, Filename: = myfile, Quality: = xlQualityStandard, _ IncludeDocProperties: = True, IgnorePrintAreas: = False, OpenAfter Patiesa “cita” MsgBox ”fails nav atlasīts. PDF netiks saglabāts ", vbOKOnly," No File Selected "End if Application.DisplayAlerts = False wsTemp.Delete With Application .ScreenUpdating = True .DisplayAlerts = Patiess beigas ar izeju Apakšgala apakšdaļa

Ja jums ir kādi jautājumi, ierakstiet tos komentāru sadaļā, kur mēs ar Raienu gaidīsim jūs.

Jums varētu patikt arī šādas Excel apmācības:

  • Kā iegult PDF failu Excel darblapā.
  • Excel VBA cilpas: nākamajam, dariet laiku, dariet līdz, katram (ar piemēriem).
  • Kā ierakstīt makro programmā Excel
  • Kā apvienot vairākas darbgrāmatas vienā Excel darbgrāmatā.
  • Kā palaist makro programmā Excel.
  • Kā izveidot un lietot Excel pievienojumprogrammu.
  • Excel VBA kļūdu apstrāde
  • Sadaliet katru Excel lapu atsevišķos failos
  • Kā importēt XML failu programmā Excel | Pārvērst XML uz Excel

Par autoru: Raiens Velss ir kodolinženieris un profesionāls VBA izstrādātājs. Viņš publicē savas viegli saprotamās Excel VBA apmācības, lai palīdzētu citiem rakstīt labākus makro. Papildus VBA mācīšanai Raiens ir vairāku Excel pievienojumprogrammu vadošais izstrādātājs. Viņa pamācības varat atrast vietnē WellsR.com.

wave wave wave wave wave