Microsoft Excel’ de VBA Yardımıyla Çalışma Sayfalarını Ayrı Ayrı PDF Olarak Kaydetme

Bu yazımızda Microsoft Excel çalışma kitabı içerisinde yer alan çalışma sayfalarını ayrı ayrı PDF formatında masaüstüne kayıt etmek için gerekli VBA kodlarını yazacağız. Kodları yazarken, kod içerisinde geçen terimleri de ayrı ayrı tanıtacağız.

Dünya üzerinde 1 milyardan fazla kullanıcıya sahip olan Microsoft Excel’ in etkin kullanımı küçük ve orta ölçekli kurum ve kuruluşlarda büyük önem arz etmektedir. Bu durumda, çalışmaların sonlarında raporlamaların yapılması ve bunların PDF formatında kayıt edilerek gerek print edilmesi gerekse dosyalanması aşamasında bu konu başlığı sizi internet ortamında diğer çöp kodlar, sonuca ulaştırmayan bilgi karışıklığı yaratan sayfaların incelenmesi durumunda gereksiz zaman kayıplarından kurtaracak, değişkenler ve bazı döngülerin de öğretilmesini sağlayacaktır.

Görüntü-1 (Örnek veri seti)

Elimizdeki veri setinin Görüntü-1 de gösterildiği gibi olduğunu kabul edelim ve “Ocak”, “Şubat”, “Mart” olarak 3 ayrı sayfamızın olduğunu varsayalım. Bu durumda amacımız konu başlığımızda da belirttiğimiz gibi bu üç sayfanın ayrı ayrı PDF formatında bilgisayarımıza kayıt edilmesi için gerekli VBA kodlamalarını yapmak olacak.

İlk etapta aşağıda tamamı verilecek olan kodların içerisinde yer alan Deyimlerin, Döngülerin ne iş yaptıklarını, açıklamalarını önden tek tek yapalım.

1- Sub Deyimi: Parametreleri ve kodu bildirir.

2- Dim Deyimi: Değişkenlerin veri tiplerini belirtir.

3- With – End With Deyimi: Kodları devamlı bir döngü içerisinde çalıştırmaya yarar. Bir tip döngüdür.

4- For Each – Next Deyimi: Belirli kısıtlar dahilinde kod içerisinde yazılı deyimleri döndürür.

Şimdi kodlarımızı aşağıdaki gibi yazıp her bir satırın veya döngünün ne işlemi gerçekleştireceğini açıklayalım.

1) Sub PDFKayıtetme()
2) Dim klasor As String

3)       With Application.FileDialog(msoFileDialogFolderPicker)
4)            .Title = "Lütfen Kayıt Klasörünü Seçiniz"
5)            If .Show = -1 Then klasor = .SelectedItems(1)
6)        End With

7) If klasor = "" Then Exit Sub

8)    Dim sh As Worksheet

9) For Each sh In ActiveWorkbook.Worksheets
10)    sh.ExportAsFixedFormat xlTypePDF, klasor & 10) 
      Application.PathSeparator & sh.Name & ".pdf"
11) Next

12) MsgBox "PDF Kayıt İşlemi Tamamlandı"
13) End Sub
Görüntü-2
(Kodların çalışması sonrası hedef olarak göstereceğiniz klasör içerisinde oluşan PDF dosyaları)
  1. Numaralı kod = Makro adını verdiğimiz alan ve kod başlangıç noktası.
  2. Numaralı kod = Klasör değişkeninin veri tipini belirler.
  3. Numaralı kod = PDF dosyalarının kayıt edileceği klasörün bulunduğu yeri seçmemiz için diyalog penceresini çalıştırır.
  4. Numaralı kod = 3 numaralı kodun devamı sonrasında diyalog penceresini getirir.
  5. Numaralı kod = Eğer döngüsüyle birlikte kayıt klasörünün seçim yapıldığını doğrular.

Not: 5 numaralı kodda belirtilen “If .Show – 1 Then” de yer alan “-1″‘ in anlamı doğru olarak yorumlanır. Buradaki -1 kodlamada “True” olarak da yazılabilir. Çok bilinen bilgi değildir. Bu bilgiye dair Türkçe açıklama yoktur, dikkatinizi çekmek isterim.

6. Numaralı kod = With döngüsünün bitimini belirtir.

7. Numaralı kod = Eğer döngüsüyle birlikte klasör seçiminin boş yapıldı ise çalışır kodun sonlanmasını sağlar.

8. Numaralı kod = Çalışma sayfası değişkeninin tipini belirler.

9. Numaralı kod = Çalışma alanı aktif çalışma kitabı ile belirlenmiş olan ve klasik For Next döngüsüne göre daha performanslı çalışan döngü tipidir.

10. Numaralı kod = Kayıt klasörüne çalışma sayfası isimlerine göre kayıt yapılmasını sağlayan koddur.

11. Numaralı kod = For Each döngüsünü sonlandıran Next deyimi.

12. Numaralı kod= İşlemin tamamlanması msgbox üretimi yapan kod.

13. Numaralı kod= Makronun sonlanmasını sağlayan kod.

Yukarıda yazılı olan kodu başlarında satır numaraları olmadan Çalışma Kitabı içerisinde ALT+F11 yaparak veya Geliştirici sekmesinde yer alan Visual Basic’ e girip, İnsert kısmından Module eklendikten sonra içerisine yapıştırıp çalıştırabilirsiniz.

Görüntüsü-3 (Alt+F11)

Kod yazımı sonrasında sorun ile karşılaşanlar gerek konu altı yorumlardan gerekse Linkedin hesabım üzerinden ulaşarak çözüm sağlayabilir.

Bir sonraki yazıda görüşmek üzere.

Yazar Hakkında
Toplam 12 yazı
Halit Bahadır
Halit Bahadır
Microsoft Power Grubu ve Office Uygulamaları üzerine aktif çalışmalar ve danışmanlık yapmakta aynı zamanda özel bir Elektrik Dağıtım Firmasında Şef pozisyonunda çalışmaktayım.
Yorumlar (4 yorum)
Mehmet G
Mehmet G Yanıtla
- 13:54

Slm,
Çalışmamı PDF olarak kaydetmek istiyorum Ama aynı sayfayı farklı isimlerle kaydetmem gerek her seferinde. Bunun için U3:W3 aralığındaki değerleri dosya ismi olark vermek istiyorum. Nasıl bir makro tanımlamalıyım

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
“C:\Users\MEHMET.GUDER\Desktop\Teklifler”, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
True.

serkan
serkan Yanıtla
- 09:28

mrb lar

istediğim sayfaları tek pdf de sayfa sayfa kaydetmesi nasıl

ibrahim okdem
ibrahim okdem Yanıtla
- 19:44

Sub PDFKayıtetme()
2) Dim klasor As String
3) With Application.FileDialog(msoFileDialogFolderPicker)
4) .Title = “Lütfen Kayıt Klasörünü Seçiniz”
5) If .Show = -1 Then klasor = .SelectedItems(1)
6) End With
7) If klasor = “” Then Exit Sub
8) Dim sh As Worksheet
9) For Each sh In ActiveWorkbook.Worksheets
10) sh.ExportAsFixedFormat xlTypePDF, klasor & Application.PathSeparator & sh.Name & “.pdf”
11) Next
12) MsgBox “PDF Kayıt İşlemi Tamamlandı”
13) End Sub

Bu formul de pdf formatında kaydediyor aynı kaydı excel formatında yapmak istiyorum. Nasıl yapmalıyım. İlgilenenlere şimdiden Teşekkür ederim.

Hakan NAKIŞ
Hakan NAKIŞ Yanıtla
- 15:11

Selam. merak ettiğim bir çok çalışma sayfası olan bir excel dosyasında bu çalışma sayfalarının belli bölümlerinin birlikte PDF olaka kaydedilmesi mümkün mü?

Örnek vermek gerekirse; Çalışma sayfası1,Çalışma sayfası2 ve Çalışma sayfası3 olsun. Çalışma sayfası1 ve Çalışma sayfası2 deki X adında bir bölüm var ((3 çalışma sayfasında da bu bölüm var ama sadece seçilen 2 çalışma sayfası)(Tablo gibi)) bu bölümleri seçerek PDF yapılabilir mi?

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

×

Bir Şeyler Ara