Excel VBA för att skriva ut som PDF och spara med automatiskt filnamn

  • Dela Detta
Hugh West

Det finns fördelar med att exportera en Excel kalkylbladet som en PDF Genom att ändra filen till PDF-format kan vi skriva ut den och dela den med olika yrkeskontakter. PDF är en pålitlig standard för att exportera dokument som du känner ett behov av att dela med andra eller offentliggöra. I den här artikeln kommer vi att visa några exempel på VBA för att skriva ut som PDF och spara med ett automatiskt filnamn.

Ladda ner övningsboken

Du kan ladda ner arbetsboken och öva med dem.

VBA Utskrift till PDF.xlsm

9 exempel på Excel VBA för att skriva ut som PDF och spara med automatiskt filnamn i Excel

Vi kan enkelt skriva ut en Excel-fil som en PDF-fil och spara filen med ett automatiskt filnamn med hjälp av Excel-verktygsfältet. Men det skulle vara enklare med Excel VBA Vi behöver bara VBA Vi behöver inte klicka så många gånger för att slutföra uppgiften, vilket sparar tid.

Visual Basic för tillämpningar ( VBA ) är en programmeringsmodell och ett isolerat program som oftast används i Microsoft Office Det är ett analysverktyg som ofta finns tillgängligt som Excel-tillägg , som optimerar manuell verksamhet, t.ex. monotona, tidskrävande sysslor. Den kan också generera CSV Vi ska se några exempel på hur du skriver ut Excel-filen som PDF med det automatiska filnamnet.

1. Skriv ut arbetsboken till PDF & Spara filnamnet automatiskt i Excel

Anta att vi vill skriva ut hela arbetsboken och spara filnamnet på samma sätt som vi anger namnet i vår kod. Anta att vi vill spara en PDF-fil på vår dator. Lokal disk (E:) Som vi kan se i bilden nedan innehåller inte platsen några pdf-filer. Efter att ha kört VBA-koden kommer vi att kunna se vår önskade PDF filen på den platsen på vår dator.

Med Excel VBA kan användarna enkelt använda koden som fungerar som Excel-menyer från bandet. För att använda koden VBA kod för att skriva ut pdf och spara med ett automatiskt filnamn, låt oss följa proceduren.

STEG:

  • Först går du till Utvecklare i bandet.
  • För det andra, från den Kod kategori, klicka på Visual Basic för att öppna Redigerare för Visual Basic . eller tryck på Alt + F11 för att öppna Redigerare för Visual Basic .

  • Istället för att göra detta kan du högerklicka på arbetsbladet och gå till Visa kod Detta tar dig också till Redigerare för Visual Basic .

  • Detta kommer att visas i Redigerare för Visual Basic där vi skriver våra koder för att skapa en tabell från ett intervall.
  • För det tredje klickar du på Modul från Infoga rullgardinsmenyn.

  • Detta skapar en Modul i arbetsboken.
  • Kopiera och klistra in VBA koden som visas nedan.

VBA-kod:

 Sub Print_Workbook() Dim loc As String loc = "E:\Workbook.pdf" ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, _ filename:=loc End Sub 
  • Kör koden genom att trycka på F5 tangenten på tangentbordet.

  • Slutligen kan du se att ett PDF-filnamn, Arbetsbok finns nu på den sökvägen på din dator. Det betyder att filnamnet sparas automatiskt.

  • Om du går tillbaka till arbetsboken kan du se några streckade linjer, eftersom filen nu är klar för utskrift.

VBA-kodförklaring

 Sub Print_Workbook() 

Under är en del av koden som används för att hantera arbetet i koden, men som inte returnerar något värde. Den kallas också för underprocedur. Så vi kallar vår procedur för Skriv ut arbetsbok() .

 loc = "E:\Workbook.pdf" 

Denna rad är till för platsen och namnet på pdf-filen. Här sparar vi vår fil i E: på vår dator och namnge filen Arbetsbok .

 ActiveWorkbook.ExportAsFixedFormat Typ:=xlTypePDF, filnamn:=loc 

Den här kodraden är till för att exportera Excel-filen som PDF-fil och göra den klar för utskrift.

 Slutar under 

Detta avslutar förfarandet.

Läs mer: Exportera Excel till PDF med hyperlänkar (2 snabba metoder)

2. Spara det aktiva arbetsbladet automatiskt som PDF

Låt oss se ett annat exempel där du skriver ut ett aktivt blad till en pdf-fil och sparar filnamnet automatiskt med hjälp av Excel VBA .

STEG:

  • Gå först till Utveckla r-fliken i bandet.
  • För det andra klickar du på Visual Basic för att öppna Redigerare för Visual Basic .
  • Ett annat sätt att öppna Redigerare för Visual Basic är helt enkelt att trycka på Alt + F11 .
  • Eller högerklicka på arket och välj sedan Visa kod .
  • Gå sedan till Infoga och välj Modul från rullgardinsmenyn.
  • Detta kommer att öppna fönstret Visual Basic.
  • Därefter kopierar du och klistrar in VBA-kod nedan.

VBA-kod:

 Sub Print_Sheet() Dim loc As String loc = "E:\Worksheet.pdf" ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _ filnamn:=loc End Sub 
  • Tryck dessutom på F5-tangenten eller klicka på Kör underordnat för att köra koden.

  • På samma sätt som i det föregående exemplet sparas filen som en PDF-fil med det automatiska filnamnet.

Om du läser example1's kodförklaring kommer du också att förstå detta.

Läs mer: Excel-makro: Spara som PDF med datum i filnamnet (4 lämpliga exempel)

3. Skriv ut PDF-filer från Excel med VBA i Range

Låt oss titta på ett annat exempel på hur du kan använda Excel VBA för att skriva ut ett aktivt blad till pdf och spara filnamnet automatiskt.

STEG:

  • För att börja, klicka på Utvecklare i bandet.
  • För det andra startar du Redigerare för Visual Basic genom att klicka på Visual Basic .
  • Alternativt kan du komma åt Redigerare för Visual Basic genom att trycka på Alt + F11 .
  • Eller, högerklicka på på arket och välj Visa kod från menyn.
  • Därefter väljer du den Modul från rullgardinsrutan under Infoga .
  • Fönstret Visual Basic visas.
  • Skriv koden där.

VBA-kod:

 Sub PrntPDF() ActiveWindow.SelectedSheets.PrintOut Copies:=1, _ Collate:=True, ActivePrinter:="Adobe PDF" Dim fnam As String fnam = Range("B4").Value End Sub 
  • Slutligen trycker du på F5-tangenten för att köra koden.

  • Därefter kan du se att en PDF-fil med namnet Workbook har lagts till på den platsen på din dator. Filnamnet bevaras därför automatiskt.

Läs mer: Skriv ut intervall till PDF med VBA i Excel (5 enklaste exempel)

4. Excel VBA för att gå i loop över valt ark och skriva ut PDF

Låt oss ta en titt på ett annat sätt att skriva ut till PDF och spara filnamnet automatiskt.

STEG:

  • För att börja öppnar du bandet och väljer Utvecklare alternativ.
  • För att få tillgång till Redigerare för Visual Basic , klicka på Visual Basic .
  • Tryck på Alt + F11 kommer också att ta fram den Redigerare för Visual Basic .
  • Alternativt, högerklicka på arket och välj Visa kod från menyn som visas.
  • Från och med nu, från Infoga rullgardinsalternativet, välj Modul .
  • Kopiera och klistra sedan in VBA koden som följer.

VBA-kod:

 Sub PrntPDF1() Dim wrksht As Worksheet Dim sht As Variant Set sht = ActiveWindow.SelectedSheets For Each wrksht In sht wrksht.Select wrksht.ExportAsFixedFormat Type:=xlTypePDF, _ filename:=ThisWorkbook.Path & "/" & wrksht.Name & ".pdf" Next wrksht sht.Select End Sub 
  • Kör koden genom att trycka på F5 nyckel.

  • Så småningom kan du se att en arbetsboks-PDF-fil har laddats upp till det området på din dator. Filnamnet behålls därför automatiskt.

Detta sparar filen som arbetsbokens bladnummer.

VBA-kodförklaring

 For Each wrksht In sht wrksht.Select wrksht.ExportAsFixedFormat Type:=xlTypePDF, filename:=ThisWorkbook.Path & "/" & wrksht.Name & ".pdf" Next wrksht 

Denna kodrad i for-slingan är till för att exportera excel-filen som pdf och skriva ut filen.

Läs mer: Excel VBA: ExportAsFixedFormat PDF med anpassning till sidan (3 exempel)

5. Skriv ut till PDF och spara filnamnet instinktivt i Excel

Ta nu en titt på en annan Excel VBA-metod för att spara Excel-filer till pdf och namnge filen automatiskt system.

STEG:

  • Öppna bandet och välj Utvecklare från rullgardinsmenyn.
  • Välj sedan Visual Basic för att öppna Redigerare för Visual Basic .
  • Redigerare för Visual Basic kan också nås genom att trycka på Alt + F11 .
  • Alternativt kan du högerklicka på arket och välj Visa kod från snabbmenyn.
  • Därefter väljer du Modul från Infoga rullgardinsmenyn.
  • Kopiera och klistra in följande VBA-kod.

VBA-kod:

 Sub PrntPDF2() Dim loc As String loc = "E:\Sheet6.pdf" ActiveSheet.ExportAsFixedFormat _ Type:=xlTypePDF, _ filnamn:=loc, _ OpenAfterPublish:=False, _ IncludeDocProperties:=True, _ IgnorePrintAreas:=False, _ Quality:=xlQualityStandard, _ From:=1, To:=2 End Sub 
  • Slutligen kör du koden genom att trycka på F5 på tangentbordet och du ser resultatet.

  • Du kommer senare att se att en Arbetsbok PDF filen redan har sparats på den platsen på din dator. Filnamnet behålls därför automatiskt.

På samma sätt som i det tidigare exemplet kommer detta också att spara pdf-filen som bladnummer.

VBA-kodförklaring

 ActiveSheet.ExportAsFixedFormat Typ:=xlTypePDF, filnamn:=loc, OpenAfterPublish:=False, IncludeDocProperties:=True, IgnorePrintAreas:=False, Quality:=xlQualityStandard, From:=1, To:=2 

Kodblocket är till för att skriva ut och spara Excel-filen som pdf.

Läs mer: Utskrift till PDF och e-post med VBA i Excel (2 användbara fall)

6. VBA-funktion för att skriva ut PDF-filer och spara filnamnet automatiskt

Låt oss utforska ett annat Excel VBA-sätt att skriva ut till PDF och spara filnamnet automatiskt. Vi kommer att använda en funktion och spara filen till PDF i det här exemplet. Vi använder också Msgbox för att ge oss ett meddelande om huruvida filen har sparats eller inte.

STEG:

  • Till att börja med går du till Utvecklare flik> Visual Basic > Infoga > Modul .
  • Eller, Högerklicka på på kalkylbladet öppnar ett fönster. Gå därifrån till Visa kod .
  • Detta tar dig till Redigerare för Visual Basic fältet, där vi kan skriva VBA-makros .
  • Om du däremot trycker på Alt + F11 öppnar också Redigerare för Visual Basic .
  • Därefter skriver du VBA kod.

VBA-kod:

 Sub PrntPDF3() Dim wrks As Worksheet Dim wrkb As Workbook Dim snam As String Dim sloc As String Dim sf As String Dim slocf As String Dim myFile As Variant Dim l As Long On Error GoTo errHandler Set wrkb = ActiveWorkbook Set wrks = ActiveSheet sloc = wrkb.Path If sloc = "" Then sloc = Application.DefaultFilePath End If sloc = sloc & "\" snam = wrks.Range("A1").Value & " Print " &wrks.Range("A2").Value & " PDF " & wrks.Range("A3").Value sf = snam & ".pdf" slocf = slocamp & sf If PrintFile(slocf) Then l = MsgBox(vbQuestion + vbYesNo, "File Exists") If l vbYes Then myFile = Application.GetSaveAsFilename(InitialFileName:=slocf, FileFilter:="PDF Files (*.pdf), *.pdf", _ Title:="Save File Name") If myFile "False" Then slocf = myFile Else GoTo exitHandler End IfEnd If End If wrks.ExportAsFixedFormat Type:=xlTypePDF, filename:=slocf, Quality:=xlQualityStandard, _ IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False MsgBox "Skriv ut PDF: " & vbCrLf & strPathFile exitHandler: Exit Sub errHandler: MsgBox "Inte skriva ut" Resume exitHandler End Sub Function PrintFile(rsFullPath As String) As Boolean PrintFile =CBool(Len(Dir$(rsFullPath))> 0) Slutfunktion 
  • Kör koden för att se resultatet genom att trycka på knappen F5-tangenten .

  • Detta kommer att visas i Msgbox och kontrollera att PDF-filen nu är klar för utskrift.

  • På samma sätt som tidigare kommer du att märka att en arbetsboks-PDF-fil redan har sparats på den platsen på din dator. Som ett resultat av detta behålls filnamnet som standard. När vi anger filnamnet Skriv ut PDF , sparade den filnamnet Skriv ut PDF.

Om du tittar på förklaringen till den tidigare koden kommer du att förstå kodens rader ordentligt. Du behöver inte ändra koden, ändra bara intervallerna enligt dina önskemål. Du kan kopiera koden och använda den för ditt arbete.

Läs mer: Excel-makro för att spara som PDF med filnamn från cellvärdet (2 exempel)

7. Excel VBA-kod för att skriva ut till PDF och spara filnamnet automatiskt

Låt oss titta på en annan Excel VBA-metod för att skriva ut till PDF och automatiskt lagra filnamnet.

STEG:

  • Till att börja med navigerar du till Utvecklare på bandet.
  • För det andra väljer du under avsnittet Kod Visual Basic för att starta Redigerare för Visual Basic . för att öppna Redigerare för Visual Basic , klicka på Alt + F11 .
  • Alternativt kan du bara högerklicka på arbetsbladet och välja Visa kod Detta tar dig till Redigerare för Visual Basic också.
  • Detta kommer att visas i Redigerare för Visual Basic där vi skriver koden för att generera en tabell från ett intervall.
  • För det tredje väljer du i rullgardinsmenyn Insert (infoga) Modul .
  • Kopiera och klistra in VBA koden som visas nedan.

VBA-kod:

 Sub PrintPDF4() Dim wrksht As Worksheet Dim wrkbk As Workbook Dim snam As String Dim sloc As String Dim sf As String Dim slocf As String Dim file As Variant On Error GoTo errHandler Set wrkbk = ActiveWorkbook Set wrksht = ActiveSheet sloc = wrkbk.Path If sloc = "" Then sloc = Application.DefaultFilePath End If sloc = sloc & "\" snam = wrksht.Range("A1").Value & " - " &wrksht.Range("A2").Value & " - " & wrksht.Range("A3").Value sf = snam & ".pdf" slocf = slocamp &; sf wrksht.ExportAsFixedFormat Type:=xlTypePDF, filnamn:=slocf, Quality:=xlQualityStandard, _ IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False MsgBox "Skriv ut PDF: " & vbCrLf & strPathFile exitHandler: Exit Sub errHandler: MsgBox "Inte skriva ut" ResuméexitHandler End Sub 
  • Kör sedan koden genom att klicka på RubSub eller genom att trycka på F5 kortkommando.

  • Särskilt viktigt är det därför att en Msgbox kommer att visas.

  • Filen sparas som en PDF-fil med samma automatiserade filnamn som i föregående exempel.

VBA-kodförklaring

 sloc = wrkbk.Path If sloc = "" Then sloc = Application.DefaultFilePath End If sloc = sloc & "\" snam = wrksht.Range("A1").Value & " - " & wrksht.Range("A2").Value & " - " & wrksht.Range("A3").Value 

Dessa är till för att hämta den aktiva arbetsboksmappen om arbetsboken sparas.

 sf = snam & ".pdf" slocf = slocamp &; sf 

Detta skapar ett standardnamn för att spara filer.

 wrksht.ExportAsFixedFormat Typ:=xlTypePDF, filnamn:=slocf, Quality:=xlQualityStandard, _ IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False 

Det blocket exporterar bara Excel-filen till PDF i den aktuella mappen.

 MsgBox "Skriv ut PDF: " & vbCrLf & strPathFile exitHandler: Exit Sub errHandler: MsgBox "Skriv inte ut" Resume exitHandler 

På så sätt kan vi se ett bekräftelsemeddelande med filinformation i Microsoft Excel.

Läs mer: Skriv ut till PDF med hjälp av makronknapp i Excel (5 makronvarianter)

8. Skriv ut ett specifikt Excel-ark med automatiskt filnamn

Låt oss titta på en annan Excel VBA-metod för att skriva ut till PDF och automatiskt lagra filnamnet.

STEG:

  • I första hand väljer du den Utvecklare i bandet.
  • För det andra, enligt Kod kategori, väljer du Visual Basic för att starta Redigerare för Visual Basic Alternativt kan du trycka på Alt + F11 för att starta Redigerare för Visual Basic .
  • Högerklicka i stället på arbetsbladet och välj Visa kod .
  • Detta kommer att visas i Redigerare för Visual Basic där vi skriver vår kod för att generera en tabell från ett intervall.
  • För det tredje väljer du Modul i rullgardinsmenyn Insert.
  • Kopiera och klistra in den VBA-kod nedan.

VBA-kod:

 Sub PrintPDF5() Dim loc As String Dim r As Range loc = "E:\PDF File.pdf" Set rng = Sheets("IT").Range("A1:F13") rng.ExportAsFixedFormat Type:=xlTypePDF, _ filename:=loc End Sub 
  • Kör dessutom koden genom att klicka på RubSub eller med hjälp av knappen F5 kortkommando.

  • Filen sparas som en PDF-fil med samma namn som i det föregående exemplet.

VBA-kodförklaring

 Dim loc As String Dim r As Range loc = "E:\PDF File.pdf" Set rng = Sheets("IT").Range("A1:F13") 

Dessa block i koderna används för att skapa och tilldela variabler.

 rng.ExportAsFixedFormat Typ:=xlTypePDF, _ filnamn:=loc 

Detta sparar en rad fildata som PDF.

Läs mer: Hur man konverterar Excel till PDF utan att förlora formatering (5 effektiva sätt)

9. Spara filnamnet på ett automatiskt sätt när du skriver ut till PDF i Excel VBA

Låt oss ta en titt på en annan Excel VBA-metod för att skriva ut till PDF och automatiskt lagra filnamnet.

STEG:

  • Till att börja med väljer du Utvecklare i bandet.
  • För det andra väljer du Visual Basic från Kod området för att öppna Redigerare för Visual Basic . Klicka Alt + F11 för att starta Redigerare för Visual Basic .
  • Du kan också högerklicka på arbetsbladet och välja Visa kod Detta tar dig också till Redigerare för Visual Basic .
  • Nu kan vi se den Redigerare för Visual Basic där vi skriver koden för att skapa en tabell från ett intervall.
  • Välj dessutom Modul från Infoga rullgardinsmenyn.
  • Kopiera och klistra sedan in VBA koden som följer.

VBA-kod:

 Sub Prnt_PDF() Call Automatic_Name End Sub Function Automatic_Name() As Boolean ' Kopierar ark till ny PDF-fil för e-postförsändelse Dim sht As String, file As String, loc As String Dim s As String Application.ScreenUpdating = False sht = ActiveSheet.Name file = ActiveWorkbook.Name loc = ActiveWorkbook.Path s = loc & "\" & sht & ".pdf" On Error Resume NextActiveSheet.PageSetup.PrintQuality = 600 err.Clear On Error GoTo 0 On Error GoTo RefLibError ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, filename:=s, Quality:=xlQualityStandard, IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish:=True On Error GoTo 0 SaveOnly: MsgBox "Sparas som .pdf-fil: " & vbCrLf & vbCrLf & SvAs & _ "Granska .pdf-dokumentet."Automatic_Name = True GoTo EndMacro RefLibError: MsgBox "Det går inte att spara som PDF." Automatioc_Name = False EndMacro: End Function 
  • Koden kommer sedan att köras genom att klicka på RubSub eller med hjälp av knappen F5 kortkommando.

VBA-kodförklaring

 sht = ActiveSheet.Name file = ActiveWorkbook.Name loc = ActiveWorkbook.Path s = loc & "\" & sht & ".pdf" 

För att få filen som en pdf-fil och spara namnet på pdf-filen.

 Vid fel Fortsätt Nästa ActiveSheet.PageSetup.PrintQuality = 600 err.Clear Vid fel Gå till 0 

Detta är bara en inställning av utskriftskvaliteten.

 On Error GoTo RefLibError ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, filename:=s, Quality:=xlQualityStandard, IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish:=True On Error GoTo 0 SaveOnly: MsgBox "Sparades som .pdf-fil: " & vbCrLf & vbCrLf & SvAs & _ "Granska pdf-dokumentet" Automatic_Name = True GoTo EndMacro RefLibError: MsgBox "Går inte att spara somPDF." Automatioc_Name = False 

Dessa rader instruerar användaren om hur filen ska skickas för att skrivas ut som en pdf-fil.

Läs mer: Hur du sparar Excel som PDF utan att skära av (4 lämpliga sätt)

Slutsats

Ovanstående metoder hjälper dig att göra detta arbete från Skriv ut till PDF och spara automatiskt filnamn i Excel VBA Jag hoppas att det här hjälper dig! Om du har några frågor, förslag eller feedback, låt oss veta det i kommentarsfältet. Du kan också ta en titt på våra andra artiklar i ExcelWIKI.com blogg!

Hugh West är en mycket erfaren Excel-tränare och analytiker med över 10 års erfarenhet i branschen. Han har en kandidatexamen i redovisning och ekonomi och en magisterexamen i företagsekonomi. Hugh har en passion för undervisning och har utvecklat ett unikt undervisningssätt som är lätt att följa och förstå. Hans expertkunskap om Excel har hjälpt tusentals studenter och yrkesverksamma över hela världen att förbättra sina färdigheter och utmärka sig i sina karriärer. Genom sin blogg delar Hugh med sig av sin kunskap med världen, och erbjuder gratis Excel-handledning och onlineutbildning för att hjälpa individer och företag att nå sin fulla potential.