Muunna Excel PDF -muotoon VBA: n avulla - ainoa tarvitsemasi opas

Sisällysluettelo

*Tämä on vieraileva viesti, jonka on kirjoittanut Ryan Wells, blogitoveri ja loistava VBA -kehittäjä.*

Jos työskentelet Excelin kanssa, sinua on epäilemättä pyydetty tekemään yhteenvetoja työstäsi.

Myyntiraportit, laskut, ennusteet, aikataulut, sinä nimität sen.

Tiedätkö mitä yhteistä näillä asiakirjoilla on? Ne näyttävät hyvältä PDF -muodossa. Tiedätkö mitä muuta? Johto rakastaa PDF -tiedostoja!

Muunna Excel PDF -muotoon

Tässä opetusohjelmassa näytän sinulle, kuinka Excel VBA: n avulla voidaan muuntaa kaikenlaiset Excel -objektit PDF -tiedostoiksi:

Aion esitellä jokaisen makron kommenteilla. Tällä tavalla voit löytää ne nopeasti, kopioida ne VBA -editoriin ja käyttää niitä.

Kun suoritat minkä tahansa näistä makroista, näkyviin tulee Tallenna nimellä -valintaikkuna, jossa kysytään minne haluat tallentaa PDF -tiedoston. Oletusnimi sisältää päivämäärän ja aikaleiman, kun suoritat makron vvvvkkp_hhmmss -muodossa.

Mennään suoraan asiaan.

Tässä on makroja:

Tulosta valinta PDF -muotoon

Tämä on henkilökohtainen suosikkini. Tämä makro muuntaa aktiivisesti valitsemasi solut PDF -muotoon.

Jos olet valinnut vain yhden solun, VBA -makro on tarpeeksi älykäs ymmärtääkseen, että et todennäköisesti halua muuntaa vain yhtä solua, joten se pyytää sinua valitsemaan muunnettavan alueen:

Sub PrintSelectionToPDF () 'SUBROUTINE: PrintSelectionToPDF' DEVELOPER: Ryan Wells 'KUVAUS: Tulosta valittu alue PDF -muotoon Dim ThisRng As Range Dim strfile String Dim myfile as Variant If Selection.Count = 1 Set ThisRng = Application.InputBox ( "Valitse alue", "Hae alue", tyyppi: = 8) Muussa tapauksessa määritä tämäRng = Valinnan loppu Jos 'Tallennuspaikan kehote strfile = "Valinta" & "_" _ & Muoto (Nyt (), "yyyymmdd_hhmmss") _ & ".pdf" strfile = ThisWorkbook.Path & "\" & strfile myfile = Application.GetSaveAsFilename _ (InitialFileName: = strfile, _ FileFilter: = "PDF -tiedostot ( *.pdf), *.pdf", _ Otsikko: = "Valitse kansio ja tiedostonimi tallennettavaksi PDF -muodossa") Jos myfile "False" Tallenna PDF -tiedostona ThisRng.ExportAsFixedFormat Type: = xlTypePDF, Tiedostonimi: = _ omatiedosto, Laatu: = xlQualityStandard, IncludeDocProperties: = True, _ IgnorePrintAreas: = False, OpenAfterPublish: = Tosi Else MsgBox "Tiedostoa ei ole valittu. PDF -tiedostoa ei tallenneta", vbOKOnly, "No File Selected" End If End Sub

Kun olet valinnut alueen ja napsauta OK, se näyttää valintaikkunan, jossa voit valita, minne haluat tallentaa PDF -tiedoston.

Se valitsee automaattisesti päivämäärän ja ajan järjestelmän kellosta ja lisää sen tiedostonimeen.

Tulosta yksi taulukko PDF -muotoon

Monet Excelin tehokäyttäjät tallentavat tietonsa järjestettyihin taulukoihin. Itse asiassa Sumit Bansal itse pitää Excel -taulukoista niin paljon, että hän kutsuu niitä Excelin piilotetuksi aarteeksi.

Tämä makro tulostaa valitsemasi taulukon PDF -tiedostoksi. Kun suoritat makron, se kysyy tallennettavan taulukon nimeä.

Sub PrintTableToPDF () 'SUBROUTINE: PrintTableToPDF' DEVELOPER: Ryan Wells 'KUVAUS: Tulosta valitsemasi taulukko PDF Dim strfile -merkkijonoksi Dim myfile As Variant Dim strTable As String, r As Range Application.ScreenUpdating = False' Kirjoita taulukko nimi, jonka haluat tallentaa strTable = InputBox ("Mikä on sen taulukon nimi, jonka haluat tallentaa?", "Anna taulukon nimi") 'Taulukko, jonka haluat tallentaa If Trim (strTable) = "" Lopeta sitten Tallennuskehote sijainti strfile = strTable & "_" _ & Format (Now (), "yyyymmdd_hhmmss") _ & ".pdf" strfile = ThisWorkbook.Path & "\" & strfile myfile = Application.GetSaveAsFilename _ (InitialFileName: = strfile, _ FileFilter: = "PDF -tiedostot ( *.pdf), *.pdf", _ Title: = "Valitse kansio ja tiedostonimi tallennettavaksi PDF -tiedostona") Jos myfile "False" Tallenna PDF -alueena (strTable) .ExportAsFixedFormat Type : = xlTypePDF, Tiedostonimi: = myfile, Quality: = xlQualityStandard, _ IncludeDocProperties: = True, IgnorePrintAreas: = False, OpenAfterPublish: = True Else MsgBox "No File Selected. PDF ei ole tallennettu ", vbOKOnly," Tiedostoa ei ole valittu "Lopeta, jos Application.DisplayAlerts = False LetsContinue: Sovelluksen kanssa .ScreenUpdating = True .DisplayAlerts = Todellinen loppu poistumalla

Kun kirjoitat taulukon nimen ja napsautat OK, se näyttää valintaikkunan, jossa voit valita, mihin haluat tallentaa PDF -tiedoston.

Se valitsee automaattisesti päivämäärän ja ajan järjestelmän kellosta ja lisää sen tiedostonimeen.

Tulosta kaikki taulukot PDF -tiedostojen erottamiseksi

Jos laskentataulukossasi on useita taulukoita ja haluat tallentaa ne erilliseen PDF -tiedostoon, voit suorittaa tämän VBA -koodin.

Kun suoritat tämän makron, näyttöön tulee valintaikkuna, jossa sinua pyydetään valitsemaan kansio, johon haluat tallentaa PDF -tiedostosi.

Kun olet valinnut kansion, makro tallentaa jokaisen taulukon PDF -tiedostoon ja taulukon nimi näkyy kätevästi PDF -tiedoston otsikossa.

Sub PrintAllTablesToPDFs () 'SUBROUTINE: PrintAllTablesToPDFs' KEHITTÄJÄ: Ryan Wells 'KUVAUS: Tulosta laskentataulukon jokainen taulukko eri PDF Dim -taulukot () String Dim strfile Kuten String Dim ch Object Vaihtoehtona Dim tbl ListObject Dim sht laskentataulukkona Application.FileDialog (msoFileDialogFolderPicker) .Title = "Minne haluat tallentaa PDF -tiedostosi?" .ButtonName = "Tallenna tänne" .InitialFileName = ThisWorkbook.Path Jos .Show = -1 Sitten 'jos OK painetaan sfolder = .SelectedItems (1) Muu End End Jos End With For kunkin sht tässä työkirjassa.Worksheets For each tbl In sht .ListObjects myfile = TämäTyökirja.Nimi & ""& tbl.Nimi &""_ & Muoto (Nyt ()," yyyymmdd_hhmmss ") _ &" .pdf "myfile = sfolder &" \ "& myfile sht.Range (tbl.Name) .ExportAsFixedFormat Type: = xlTypePDF, Tiedostonimi: = _ oma tiedosto, laatu : = xlQualityStandard, IncludeDocProperties: = True, _ IgnorePrintAreas: = False, OpenAfterPublish: = True Seuraava tbl Seuraava sht End Sub

Tulosta kaikki taulukot yhdeksi PDF -tiedostoksi

En tiedä sinusta, mutta työssäni meidän on säilytettävä PDF -kopiot lähes kaikista laskentataulukoistamme. Liitämme laskentataulukoidemme PDF -kopiot suunnittelulaskelmiimme. Nämä PDF-tiedostot muunnettiin mikrofisiksi ja holvattiin pitkän aikavälin säilyttämiseksi. Tiedätkö, jos apokalypsi tapahtuisi.

Jos joudut samanlaiseen tilanteeseen, on mukavaa, että voit automaattisesti muuntaa laskentataulukon kaikki taulukot yhdeksi PDF -tiedostoksi. Tässä on VBA -makro, joka tekee juuri sen:

Sub PrintAllSheetsToPDF () 'SUBROUTINE: PrintAllSheetsToPDF' KEHITTÄJÄ: Ryan Wells 'KUVAUS: Yhdistä kaikki laskentataulukot yhdeksi PDF -muotoiseksi Array jokaiselle sh: lle ActiveWorkbook.Worksheets Jos sh.Visible = xlSheetVisible Sitten ReDim Säilytä strSheets (icount) strSheets (icount) = sh.Name icount = icount + 1 End If Next sh If icount = 0 Sitten 'Kaavioita ei löydy. Punch error MsgBox "PDF -tiedostoa ei voi luoda, koska arkkeja ei löydy.", "Sheets not found" Exit Sub End If 'Prompt for save location strfile = "Sheets" & "_" _ & Format (Now (), " yyyymmdd_hhmmss ") _ &" .pdf "strfile = ThisWorkbook.Path &" \ "& strfile myfile = Application.GetSaveAsFilename _ (InitialFileName: = strfile, _ FileFilter: =" PDF -tiedostot ( *.pdf), *.pdf ", _ Title: = "Valitse kansio ja tiedostonimi tallennettavaksi PDF -tiedostona") Jos myfile "False" Tallenna PDF -tiedostona ThisWorkbook.Sheets (strSheets) .Valitse ActiveSheet.ExportAsFixedFormat Type: = xlTypePDF, Tiedostonimi: = _ myfile, Quality: = xlQualityStandard, IncludeDocProperties: = True, _ IgnorePrintAreas: = False, OpenAfterPublish: = True Muu MsgBox "Ei tiedostoa valittu. PDF -tiedostoa ei tallenneta", vbOKOnly, "Tiedostoa ei ole valittu" Lopeta jos loppu

Tulosta kaavioarkit PDF -muotoon

Tämä makro muuntaa kaikki kaaviotaulukot yhdeksi PDF -tiedostoksi - mutta ei kaavioobjekteja! Kaavioarkkeilla tarkoitan kaavioita, joilla on oma välilehti taulukkolaskentavälilehtien luettelossa:

Sub PrintChartSheetsToPDF () 'SUBROUTINE: PrintChartSheetsToPDF' KEHITTÄJÄ: Ryan Wells 'KUVAUS: Yhdistä kaikki kaavioarkit yhdeksi PDF Dim strSheets () Merkkijonona Dim strfile Kuten merkkijono Dim ch Kuten kohde, sh Kuten laskentataulukko Dim ikoni kokonaismuuttujana Tallenna kaaviotaulukon nimet taulukkoon kullekin ch: lle ActiveWorkbookissa. Rei'itysvirhe MsgBox "PDF -tiedostoa ei voi luoda, koska kaavioarkkeja ei löydy.", "Kaavioarkkeja ei löydy" Poistu alapäästä, jos 'Tallenna sijaintikehote strfile = "Charts" & "_" _ & Format (Now () , "yyyymmdd_hhmmss") _ & ".pdf" strfile = ThisWorkbook.Path & "\" & strfile myfile = Application.GetSaveAsFilename _ (InitialFileName: = strfile, _ FileFilter: = "PDF -tiedostot ( *.pdf), *.pdf ", _ Title: =" Valitse kansio ja tiedostonimi tallennettavaksi PDF -tiedostona ") Jos myfile" False "Tallenna PDF -tiedostona ThisWorkbook.Sheets (strSheets) .Valitse ActiveSheet.ExportAsFixedFormat Type: = xlTypePDF, Tiedostonimi: = _ myfile, Laatu: = xlQualityStandard, IncludeDocProperties: = True, _ IgnorePrintAreas: = False, OpenAfterPublish: = True Else MsgBox "Tiedostoa ei ole valittu. PDF -tiedostoa ei tallenneta", vbOKOnly, "No File Selected" End If End Sub

Tulosta kaavion objektit PDF -muotoon

Tämä makro tallentaa kaikki normaalit kaaviot - kaavioobjektit - yhdeksi PDF -tiedostoksi. Riippumatta siitä, millä laskentataulukolla kaaviosi on, se tarttuu ja tallennetaan PDF -tiedostoon.

Lopullisessa PDF -tiedostossa on vain yksi kaavio per sivu.

Sub PrintChartsObjectsToPDF () 'SUBROUTINE: PrintChartsObjectsToPDF' KEHITTÄJÄ: Ryan Wells 'KUVAUS: Yhdistä kaikki kaavio -objektit yhdeksi PDF Dim ws -työarkiksi, wsTemp As Sheets Dim Chrt As ChartObject Dim tp As Long Dim strfile As String Dimf = False Set wsTemp = Sheets.Add tp = 10 With wsTemp For each ws ActiveWorkbook.Worksheets If ws.Name = wsTemp.Name Sitten 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 Sitten ActiveSheet.Rows (Selection.TopLeftCell.Row) .PageBreak = xlPageBreakManual End Jos tp = tp + Selection.Height + 50 Seuraava seuraava: ws päättyy 'Tallenna sijaintikehote strfile = "Charts" & "_" _ & Format (Now (), "yyyymmdd \ _hhmmss") _ & ".pdf" strfile = ActiveWorkbook.Path & "\" & strfile myfile = Application.GetSaveAsFilename _ (InitialFileName: = strfile, _ FileFilter: = "PDF -tiedostot ( *.pdf), *.pdf", _ Title: = "Valitse kansio der ja tiedostonimi tallennettavaksi PDF -tiedostona ") Jos myfile False Sitten" tallenna PDF -tiedostona wsTemp.ExportAsFixedFormat Type: = xlTypePDF, Tiedostonimi: = omatiedosto, Laatu: = xlQualityStandard, _ IncludeDocProperties: = True, IgnorePrintAreas: = False, OpenAfter Todellinen "Muu" MsgBox "Tiedostoa ei ole valittu. PDF -tiedostoa ei tallenneta ", vbOKOnly," Tiedostoa ei ole valittu "Lopeta, jos Application.DisplayAlerts = False wsTemp.Delete With Application .ScreenUpdating = True .DisplayAlerts = True End Exit Sub End End Sub

Jos sinulla on kysyttävää, pudota ne kommenttikenttään, jossa Ryan ja minä odotamme sinua.

Saatat pitää myös seuraavista Excel -opetusohjelmista:

  • PDF -tiedoston upottaminen Excel -laskentataulukkoon.
  • Excel VBA -silmukat: Tee seuraavaksi Tee, Tee kunnes, Kullekin (esimerkkien avulla).
  • Makron tallentaminen Exceliin
  • Useiden työkirjojen yhdistäminen yhdeksi Excel -työkirjaksi.
  • Makron suorittaminen Excelissä.
  • Excel-apuohjelman luominen ja käyttö
  • Excel VBA -virheiden käsittely
  • Jaa jokainen Excel -arkki erillisiksi tiedostoiksi
  • XML -tiedoston tuominen Exceliin | Muunna XML Exceliksi

Kirjailijasta: Ryan Wells on ydininsinööri ja ammattimainen VBA -kehittäjä. Hän julkaisee helposti ymmärrettävät Excel VBA -opetusohjelmansa auttaakseen muita kirjoittamaan parempia makroja. VBA: n opettamisen lisäksi Ryan on useiden Excel-apuohjelmien johtava kehittäjä. Löydät hänen opetusohjelmansa osoitteesta WellsR.com.

wave wave wave wave wave