Anasayfa / Genel bir bakış / Microsoft Excel’ de VBA Yardımıyla Çalışma Sayfalarını Ayrı Ayrı PDF Olarak Kaydetme

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.

Hakkında Halit Bahadır

GÖZ ATMAK İSTEYEBİLİRSİNİZ

Yapay Zeka Uygulama Geliştirme Kartı: NVIDIA JETSON NANO-2

Herkese merhabalar. Yapay Zeka Uygulama Geliştirme Kartı: NVIDIA JETSON NANO serisinin 2. bölümüne başlıyoruz. Bu …

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir