Excel PDF olarak kaydetme | Seçili Alan PDF Kaydetme

Excel PDF Olarak Kaydetme | Seçili Alanı PDF Olarak Kaydetme (Makro ile)

Merhaba, Excel PDF olarak kaydetme yazımda, Excel sayfamızdaki seçili alanı Excel makro ile PDF’e dönüştürme konusuna değineceğim,  sade şekilde anlatabilmeyi umuyorum.

Bu sayede Excel programında bir sayfada seçtiğimiz alanı PDF olarak bilgisayarımızdaki belirlediğimiz bir alana istediğimiz isimde otomatik kaydedeceğiz.

Yani yazacağımız Excel Makrosu bizden nereye kaydetmemiz gerektiğini istemeyecek. Yazacağımız Exceli PDF’e çevirme makrosu ile oluşturduğumuz PDF aşağıdaki ekran görüntülerindeki gibi olacak.

 

Exceli PDF olarak kaydetme baslangıc
Exceli PDF olarak kaydetme işlemini bu Excel sayfasında yapacağız.

Excel PDF’e çevirme işlemi sonrasında ise ekranda oluşan PDF dosyasının yolu ve adı;

Exceli PDF olarak kaydetme sonuc1
Exceli PDF olarak kaydetme Sonrası Oluşan Dosya

Excel’den Oluşan PDF Dosyası’nı açalım bakalım nasıl kaydolmuş;

Exceli PDF olarak kaydetmesonuc2
Exceli PDF olarak kaydetme İşlemi Sonucu Oluşan PDF İçeriği

Peki bu makroyu nasıl yazacağız.

Öncelikle bir yordam çalıştırıp yordamın adı Alan_sec_pdf_olarak_kaydet() olacak, bu yordam içerisine, oluşturacağımız PDF için gerekli olan parametreleri belirliyoruz.

Sub Alan_sec_pdf_olarak_kaydet()
Dim dosya_yolu As String
Dim dosya As String
Dim dosya_adi As String
dosya_adi = "BA_Mutabakat_Metni_" & Range("b4") & "_" & Range("f1") & "_" & Range("G1")
dosya_yolu = "S:\"
'Parametreler artık belli oldu. Fonksiyonu gerekli olan tüm parametreler ile çağırıyoruz.
'sabit bir range seçip pdf'i oluşturmak istiyorsanız aşağıdaki gibi tanımlamalısınız.
dosya = Pdf_olustur(alan_:=Range("A1:f40"), _'PDF_OLUSTUR fonksiyonunu burada çağırıyoruz.
sabitDosyaYolu_:=dosya_yolu, _
pdfiAc_:=False, _
dosyaAdi_:=dosya_adi)
End Sub

Excel PDF olarak kaydetme Makro Fonksiyonumuz

Oluşturduğumuz bu yordam PDF oluşturma parametrelerini PDF_OLUSTUR fonksiyonuna gönderecektir.

Exceli PDF e dönüştürme işlemini PDF _OLUSTUR fonksiyonu yardımı ile yapacağız.

Görüldüğü gibi “alan_” değişkeni sabit bir range olarak tanımlandı.

Ancak biz burada ayrıca bir Range değişkeni oluşturup bu range değişkenini PDF_OLUSTUR fonksiyonuna parametre olarak gönderebilirdik.

Bunu siz kendiniz de yapabilirsiniz 🙂 Bu örneği vermek istedim çünkü Exceli PDFe çevirme işleminde PDF eğer Range düzgün belirlenmemişse kötü görüntüler ile oluşabiliyor.

“pdfiAc_” parametremiz ise “False” olarak tanımlandı. Eğer “True” olarak tanımlasaydık Exceli PDFe çevirme işleminden sonra oluşan PDF otomatik olarak açılacaktı.

“dosyaAdi_” parametresi de hücrelerden aldığımız veriler ile oluşturulmuş bir tür string değerdir. Şimdi gelelim PDF_OLUSTUR fonksiyonumuza;

Function Pdf_olustur(alan_ As Object, sabitDosyaYolu_ As String, _
pdfiAc_ As Boolean, dosyaAdi_ As String) As String 'dosya dizinini döndürür
Dim dosya_ As Variant
dosya_ = sabitDosyaYolu_ & dosyaAdi_ & ".pdf"
On Error Resume Next
alan_.ExportAsFixedFormat _
Type:=xlTypePDF, _
FileName:=dosya_, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=pdfiAc_
On Error GoTo 0
'Fonksiyon geri dönüş olarak bize dosya ismini dönecek.
Pdf_olustur = dosya_
End Function

PDF_OLUSTUR fonksiyonumuz görüldüğü gibi. Bütün işlemler seçtiğimiz alan üzerinden yapılıyor.

“alan_.” ile başladıktan sonra Type degiskenine  “xlTypePDF” degeri vererek PDFe çevireceğimizi belirtiyoruz. Filename ise “dosya_” değişkenimiz ile gönderdiğimiz değer olacak. OpenAfterPublish değişkenimiz ise “pdfiAc_” olarak gönderdiğimiz parametre değeri olacak.

Bu kadar mı ?

Evet. Sanki bir işlem yapılmamış gibi dimi? ancak burada  “alan_” değişkeni üzerinde farklı bir formatta kaydetme işlemini yapan “ExportAsFixedFormat”  fonksiyonudur. Syntaxı:

alan_(secilen_bir_alan_yani_range).ExportAsFixedFormat( _Type_ , _Filename_ , _Quality_, _IncludeDocProperties_ ,_IgnorePrintAreas_ , _From_ ,_To_ ,_OpenAfterPublish_ , _FixedFormatExtClassPtr_)

Adından da anlaşılacağı gibi sabit bir formatta (Type:=xlTypePDF) alan_ değişkenini,  verdiğimiz parametreler ile export ediyor yani dışarı alıyor.

Yahu bu nasıl fonksiyon parametreleri “()”parantez içerisine almamız gerekmiyor muydu diye düşünebilirsiniz. Ancak fonksiyonu bu şekilde de çağırabiliyoruz.

Bir sonraki yazımda bu şekilde oluşturduğumuz PDF’i mail olarak gönderme işlemini paylaşacağım.
Excel Seçili Alanı Makro ile PDF olarak kaydetme yazımızın sonuna geldik . Daha Faydalı yazılarda görüşmek dileğiyle 🙂

Faydalandığım Kaynak

Diğer yazılarım