File PDF (Portable Document Format) telah menjadi salah satu format berbagi dokumen yang paling umum digunakan saat ini.
Kemampuannya yang dapat dibaca secara universal membuatnya menjadi pilihan utama bagi banyak orang yang ingin berbagi informasi, terutama dalam konteks bisnis.
Dalam aplikasi seperti Microsoft Excel,
kita dapat menggunakan Visual Basic for Applications (VBA) untuk membuat, mengelola, dan menyesuaikan file PDF sesuai kebutuhan kita.
Materi kali ini, akan membahas cara menggunakan VBA dalam Excel untuk membuat dan mengelola file PDF.
Untuk membuat PDF menggunakan VBA di Excel, kita dapat menggunakan library atau objek yang disediakan oleh Microsoft.
Salah satu cara yang umum adalah menggunakan objek ExportAsFixedFormat
.
Berikut adalah sintak dasar penggunaannya:
expression.ExportAsFixedFormat (Type, FileName, Quality, IncludeDocProperties, IgnorePrintAreas, From, To, OpenAfterPublish, FixedFormatExtClassPtr)
Fungsi ExportAsFixedFormat
dalam VBA Excel digunakan untuk mengekspor atau menyimpan lembar kerja (worksheet) atau objek tertentu dalam berbagai format file, seperti PDF, XPS, dan format gambar lainnya.
Fungsi ini memungkinkan pengguna untuk mengatur beberapa parameter yang mengontrol bagaimana data akan diekspor.
Berikut adalah beberapa parameter yang dapat digunakan dalam fungsi ExportAsFixedFormat
:
xlTypePDF
, xlTypeXPS
, xlTypeCSV
, xlTypeXLSX
, dan lainnya, tergantung pada format file yang diinginkan."C:\Folder\file.pdf"
.xlQualityStandard
atau xlQualityMinimum
. Semakin tinggi kualitasnya, semakin besar ukuran file yang dihasilkan.True
atau False
.True
atau False
.Nothing
jika semua halaman akan diekspor.Nothing
jika semua halaman akan diekspor.True
atau False
.Contoh penggunan scriptnya seperti dibawah ini:
Sub ExportToPDF() Dim filePath As String filePath = "C:\Folder\file.pdf" ' Ganti dengan lokasi dan nama file yang diinginkan ' Export sheet aktif ke PDF ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=filePath, Quality:=xlQualityStandard End Sub
Pada script diatas, ExportAsFixedFormat
mengexport Sheet aktif dan menyimpan Filenya sesuai dengan isi yang ada di FilePath.
Bagaimana jika sheet tertentu yang ingin di Export menjadi PDF?
Jika Sheet yang akan di Export bukan sheet aktif,
Pada Sheet aktif bisa diganti dengan nama sheet yang ingin di Export menjadi file PDF.
Sub ExportToPDF() Dim filePath As String filePath = "C:\Folder\file.pdf" ' Export sheet aktif ke PDF Worksheets("Laporan").ExportAsFixedFormat Type:=xlTypePDF, Filename:=filePath, Quality:=xlQualityStandard End Sub
Pada Script diatas, Sheet “Laporan” yang akan di Export menjadi File PDF.
Hasil File PDF ditentukan oleh setingan page setup pada workshsheet
vba.co.id
Pada dua contoh script diatas, penamaan file pada hasil Export bernilai statis atau Hardcode. Artinya nama file hanya bisa diganti melalui penulisan script langsung.
Penamaan file bisa langsung melalui Range atau bahkan melalui Save dialog.
Untuk penamaan File melalui Range, lokasi Folder harus diisi dengan lengkap, contohnya bisa dilihat dibawah ini.
Sub ExportToPDF() Dim filePath As String Dim nFolder As String nFolder = "C:\Folder\" 'nama File dari Range A1 filePath = nFolder & Range("A1").Value & ".pdf" 'Export sheet aktif ke PDF Worksheets("Laporan").ExportAsFixedFormat Type:=xlTypePDF, Filename:=filePath, Quality:=xlQualityStandard End Sub
Dengan menggunakan Dialog save as, penamaan file PDF menjadi lebih dinamis, karena nama file bisa dibuat apapun saat Export dilakukan.
Sub ExportToPDF() Dim filePath As String Dim nFolder as String filePath = Application.GetSaveAsFilename( _ fileFilter:="PDF Files (*.pdf), *.pdf", _ Title:="Save As PDF") ' Periksa apakah pengguna telah memilih file If filePath = False Then MsgBox "Export PDF dibatalkan." Exit Sub End If ' Export sheet ke PDF Worksheets("Laporan").ExportAsFixedFormat Type:=xlTypePDF, Filename:=filePath, Quality:=xlQualityStandard End Sub
Bagaimana jika Sheet yang mau di export menjadi PDF lebih dari 1 misalnya ada 4 sheet dan semuanya ingin ada atau menjadi 1 file pdf saja?
Untuk menjawab ini akan dibahas pada meteri selanjutnya.