Kritere Göre PDF Çıktısı Alma

Katılım
10 Ağustos 2004
Mesajlar
290
Excel Vers. ve Dili
Excel 2021 - Türkçe
C:\HedefKlasor\ klasör içindeki pdf dosyalarının başlıklarında ilk 5 sayı var ise olanları sırasıyla yazıcıdan çıktı almak istiyorum. Kurala uymayanları atlasın. 64 bit Adobe Acrobat Pro kullanıyorum.
 

tugkan

Altın Üye
Katılım
6 Kasım 2004
Mesajlar
312
Excel Vers. ve Dili
Excel 2016
Türkçe 64 BIT
Altın Üyelik Bitiş Tarihi
16-10-2025
Başlıkları derken dosya adlarından mı bahsediyorsunuz?
Bir de ilk 5 sayı derken isimlerinin başında 5 adet rakam var mı demek istiyorsunuz?
 
Katılım
10 Ağustos 2004
Mesajlar
290
Excel Vers. ve Dili
Excel 2021 - Türkçe
Başlıkları derken dosya adlarından mı bahsediyorsunuz? Evet

Bir de ilk 5 sayı derken isimlerinin başında 5 adet rakam var mı demek istiyorsunuz? Evet, "12345 – Deneme” gibi
 

tugkan

Altın Üye
Katılım
6 Kasım 2004
Mesajlar
312
Excel Vers. ve Dili
Excel 2016
Türkçe 64 BIT
Altın Üyelik Bitiş Tarihi
16-10-2025
Evet, Excel'de bir VBA makrosu ile bu işlemi gerçekleştirebiliriz. Bu makro, belirttiğiniz klasördeki PDF dosyalarını tarayarak, dosya adının ilk 5 karakterinin sayı olup olmadığını kontrol eder ve bu kurala uyan dosyaları yazdırır. Ayrıca, Adobe Acrobat Pro yazıcısını kullanarak çıktı almayı sağlayabiliriz.

Aşağıdaki adımları izleyerek makroyu oluşturabilirsiniz:

1. VBA Makro Kodunu Yazma:
Kod:
Sub YazdirPDFDosyalari()
    Dim hedefKlasor As String
    Dim dosyaAdi As String
    Dim dosyaYolu As String
    Dim FSO As Object
    Dim klasorDosyalar As Object
    Dim dosya As Object
    Dim ilkBesKarakter As String
    Dim AcrobatApp As Object
    Dim AcrobatDoc As Object
    Dim i As Integer
    
    ' Hedef klasör
    hedefKlasor = "C:\HedefKlasor\"
    
    ' Dosya sistemi nesnesi oluştur
    Set FSO = CreateObject("Scripting.FileSystemObject")
    
    ' Klasördeki dosyaları al
    Set klasorDosyalar = FSO.GetFolder(hedefKlasor).Files
    
    ' Adobe Acrobat uygulamasını aç
    On Error Resume Next
    Set AcrobatApp = CreateObject("AcroExch.App")
    On Error GoTo 0
    
    ' Klasördeki her bir dosyayı tarar
    For Each dosya In klasorDosyalar
        ' Dosya uzantısı .pdf mi kontrol et
        If LCase(FSO.GetExtensionName(dosya.Name)) = "pdf" Then
            ' Dosya adının ilk 5 karakterini al
            dosyaAdi = FSO.GetBaseName(dosya.Name)
            ilkBesKarakter = Left(dosyaAdi, 5)
            
            ' İlk 5 karakterin sayı olup olmadığını kontrol et
            If IsNumeric(ilkBesKarakter) Then
                dosyaYolu = hedefKlasor & dosya.Name
                
                ' PDF dosyasını aç
                Set AcrobatDoc = CreateObject("AcroExch.PDDoc")
                If AcrobatDoc.Open(dosyaYolu) Then
                    ' Dosyayı yazdır
                    AcrobatDoc.PrintPagesSilent 0, AcrobatDoc.GetNumPages - 1, 1, False, False
                    ' PDF dosyasını kapat
                    AcrobatDoc.Close
                End If
            End If
        End If
    Next dosya
    
    ' Adobe Acrobat uygulamasını kapat
    If Not AcrobatApp Is Nothing Then AcrobatApp.Exit
    
    ' Temizle
    Set AcrobatDoc = Nothing
    Set AcrobatApp = Nothing
    Set klasorDosyalar = Nothing
    Set FSO = Nothing

    MsgBox "Yazdırma işlemi tamamlandı.", vbInformation
End Sub
2. Makroyu Kullanma:
  1. Excel'de Alt + F11 tuşlarına basarak VBA editörünü açın.
  2. Üst menüden Insert > Module seçeneğine tıklayın.
  3. Açılan boş alana yukarıdaki kodu yapıştırın.
  4. Alt + F8 tuşlarına basarak makronun adını seçin (YazdirPDFDosyalari) ve çalıştırın.
3. Çalışma Prensibi:
  • Makro, "C:\HedefKlasor" içindeki tüm dosyaları tarar.
  • Dosya adının ilk 5 karakterinin sayı olup olmadığını kontrol eder.
  • Sayı olan PDF dosyalarını Adobe Acrobat Pro kullanarak yazdırır.
  • Kurala uymayan dosyalar atlanır.
Bu makroyu gereksinimlerinize göre değiştirebilirsiniz.
 
Üst