Spara som pdf med VBA

Spara som pdf i Excel och ange filnamn

Ibland vill du kanske spara data från en arbetsbok i Excel som en pdf. Detta görs i kod bäst med funktionen ExportAsFixedFormat(). Denna metod sparar arket som en pdf-fil. Om ett utskriftsområde angetts så är det utskriftsområdet som sparas.

Här laddar du ner övningsfilen och du vill testa själv.

OBS! Övningsfilen behöver sparas innan den testas, annars kan det bli svårt att hitta den genererade pdf:en 😉. Filen består av två bladflikar, en utan och en med utskriftsområde. Givetvis skall filen inte sparas i en mapp där du redan har en pdf som heter test.pdf eftersom exemplet sparar över filen om den finns.

Vi rekommenderar dessa Excelkurser:
www.infocell.se – lärarledda kvalitetskurser i Excel
www.officekurs.se – oslagbar e-Learning i Excel & Office-paketet

Eftersom det är en vanligt förekommande uppgift är det praktiskt att skapa en generell metod för detta. Till exempel kan det ibland vara så att du vill spara över filen om den redan finns, i andra fall kanske vi inte vill spara över den.

Metoden Lib_SaveSheetAsPdf i bifogad Excelfil gör just detta. Den tar emot en referens till arket vi vill spara samt filnamnet som vi vill spara pdf:en som. I filnamnet skall filändelsen .pdf ingå. Vi gör det frivilligt att ange mapp samt att ange om filen skall raderas.

Public Function Lib_SaveSheetAsPdf(wsToSave As Worksheet, sFileName As String, Optional sFolder As String = ””, Optional bDeleteFileIfExists As Boolean = False) As Boolean

I bifogad Excelfil visas med kommentarer hur metoden fungerar. Öppna VBA-editorn med Alt+F11 för att se koden. Om inte någon mapp har angetts så antar metoden att filen skall läggas i samma mapp som den aktuella arbetsboken är sparad.

Om filen inte skall raderas så returnerar metoden false för att indikera att inget sparas, annars returneras true.

Metoden granskar om filen redan finns genom att anropa metoden Lib_CheckIfFileIfExists. Denna metod granskar först om filen inte finns. I så fall returneras false. Om filen finns granskas om den skall raderas. I så fall raderas den och metoden returnerar false eftersom filen tagits bort. Om filen finns och inte skall raderas returneras true och filen kvarstår orörd.

Public Function Lib_CheckIfFileIfExists(ByVal sPath As String, Optional bDeleteFileIfExists As Boolean = False) As Boolean

Metoden att spara en pdf testas med metoden TestaSpara. Denna anropar helt enkelt Lib_SaveSheetAsPdf och anger att det är det aktiva arket som skall sparas. Filnamn anges till test.pdf och det anges att filen skall raderas om den finns. Sökvägen, tredje argumentet saknas vilket innebär att mapp inte anges och filen kommer därför att sparas i samma mapp som exempelfilen.

Public Sub TestaSpara()

Call Lib_SaveSheetAsPdf(ActiveSheet, ”test.pdf”, , True)

End Sub

Sugen på mer VBA?

officekurs.se hittar du vår omfattande e-kurs i VBA och makron. Där finns givetvis många andra e-kurser i Excel och Microsoft 365. Välkommen in!

Kontakta oss gärna om du är intresserad av lärarledd VBA-kurs eller vill ha hjälp med Excelutveckling.

Du gillar kanske också...