Klasör İçeriğini Toplu Yazdırma

Katılım
9 Haziran 2019
Mesajlar
221
Excel Vers. ve Dili
Office 2016 Eng.
Merhaba;

Bir klasör içerisinde çok sayıda dosyalar yer almaktadır. (pdf - xls - jpg uzantılı). (50 ile 200 Adet)

Kod yardımı ile toplu yazdırma işlemi yapmak istiyorum.

-İlk adım Klasör seçeneğinin açılması
-İkinci adım ise Sistem üzerindeki çıktıları alacağım yazıcıyı belirlemek istiyorum.

Eğer mümkün ise Sayfanın A:A sutünuna çıktı alınan dosyanın adını yazmasını B:B sütununa ise Çıktı Alındı yazması yapılabilir mi_? Konu hakkında desteğinizi bekliyorum.
Saygılarımla.
 

gicimi

Altın Üye
Katılım
3 Şubat 2008
Mesajlar
593
Excel Vers. ve Dili
Office 2016 Eng. 64 Bit
Altın Üyelik Bitiş Tarihi
21-11-2024
Merhaba;
Sitede bir kaç örnek var ama sizin isteğinizi karşılayabilir. Sistemde tanımlı yazıcıya otomatik gönderiyor. Başka bir işlem yapmıyor. Sitedeki üstadlar konu hakkında size destek olabilir.
 

askm

Destek Ekibi
Destek Ekibi
Katılım
4 Haziran 2005
Mesajlar
2,745
Excel Vers. ve Dili
2010-2016
Öncelikle dosya isimlerini listeleyin. Sonrasında o belgeleri yazdırın. Ama pdf yazdırmak ve jpg yazdırmak için ayrı kodlar yazmak gerek diye biliyorum.
 
Katılım
9 Haziran 2019
Mesajlar
221
Excel Vers. ve Dili
Office 2016 Eng.
Klasör içindeki dosya uzantılarını .pdf olarak düşününüz.
 
Katılım
9 Haziran 2019
Mesajlar
221
Excel Vers. ve Dili
Office 2016 Eng.
Merhaba;

Konu güncel. Bu şekilde bir şey yapılamıyor mu _? hiç olmadı bir üstad olur yada olmaz diye dönüş yaparsa süper olur.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,190
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Evde yazıcım olmadığı için deneme şansım olmadı. Siz deneyip sonucu bildirir misiniz?

Kod:
Option Explicit

Sub Klasordeki_Dosyalari_Yazdir()
    Dim Tanimli_Printer As String, Printer_Secimi As Variant
    Dim Klasor As Variant, Yol As String, Dosya As String, Satir As Long
    Dim Gorev_Yoneticisi As Object, Uygulamalar As Variant, Uygulama As Object
    
    Tanimli_Printer = Application.ActivePrinter
    
    Printer_Secimi = Application.Dialogs(xlDialogPrinterSetup).Show
    If Printer_Secimi = False Then Exit Sub
    
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    
    Range("A:B").Clear
    Range("A1:B1") = Array("DOSYA ADI", "AÇIKLAMA")
    Range("A1:B1").Font.Bold = True
    Satir = 2
    
    Set Klasor = CreateObject("Shell.Application").BrowseForFolder(0, "Klasör Seçiniz...", 1)
                        
    If Klasor Is Nothing Then Exit Sub
        
    Yol = Klasor.Items.Item.Path & Application.PathSeparator
    
    Dosya = Dir(Yol & "*.*")
    
    While Dosya <> ""
        DoEvents
        CreateObject("Shell.Application").Namespace(0).ParseName(Yol & Dosya).InvokeVerb ("Print")
        Cells(Satir, 1) = Dosya
        Cells(Satir, 2) = "Çıktı Alındı"
        Satir = Satir + 1
        Dosya = Dir
    Wend
    
    Range("A:B").EntireColumn.AutoFit
    
    Application.Wait Now + TimeValue("00:00:10")
    
    Set Gorev_Yoneticisi = GetObject("winmgmts:")
    Set Uygulamalar = Gorev_Yoneticisi.ExecQuery("Select * from Win32_Process")
    
    On Error Resume Next
    
    For Each Uygulama In Uygulamalar
        If InStr(1, Uygulama.Name, "Adobe", vbTextCompare) > 0 Or _
           InStr(1, Uygulama.Name, "OneNote", vbTextCompare) > 0 Then
            Uygulama.Terminate
        End If
    Next
    
    On Error GoTo 0
    
    Application.ActivePrinter = Tanimli_Printer
    
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    
    If Range("A2") = "" Then
        MsgBox "Yazdırılacak dosya bulunamadı!", vbExclamation
    Else
        MsgBox "Seçtiğiniz klasördeki dosyalar yazdırılmıştır.", vbInformation
    End If
End Sub
 
Katılım
9 Haziran 2019
Mesajlar
221
Excel Vers. ve Dili
Office 2016 Eng.
Sn. Korhan Bey çok teşekkür ederim her zaman ki gibi hızır gibi yetiştiniz. Yarın sunucu belirteceğim. Evde benimde yazıcım yok.
 

gicimi

Altın Üye
Katılım
3 Şubat 2008
Mesajlar
593
Excel Vers. ve Dili
Office 2016 Eng. 64 Bit
Altın Üyelik Bitiş Tarihi
21-11-2024
@Korhan Ayhan Bey Selamlar,
Kodu denedim. Kod çalışıyor ama şöyle bir durum var, "Adobe ve OneNote" uygulamalarını otomatik çalıştırıyor. Bunun için bir kodda revize yapılabilir mi_?
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,190
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Merhaba,

Kodu deneme fırsatınız oldu mu?
 
Katılım
9 Haziran 2019
Mesajlar
221
Excel Vers. ve Dili
Office 2016 Eng.
@Korhan Ayhan Bey Merhaba;
Kodu denedim. Adobe Reader açılıyor ve klasör içeriğini yazıyor. @gicimi Bey'in dediği gibi Abode açılmasa olur mu veya açıldığında tüm belgeleri yazdırdıktan sonra adobe programını kapatabilir mi.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,190
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Merhaba,

#6 nolu mesajımdaki kodu revize ettim. Tekrar deneyip sonucu bildirir misiniz?
 

gicimi

Altın Üye
Katılım
3 Şubat 2008
Mesajlar
593
Excel Vers. ve Dili
Office 2016 Eng. 64 Bit
Altın Üyelik Bitiş Tarihi
21-11-2024
Evde yazıcım olmadığı için deneme şansım olmadı. Siz deneyip sonucu bildirir misiniz?

Kod:
Option Explicit

Sub Klasordeki_Dosyalari_Yazdir()
    Dim Tanimli_Printer As String, Printer_Secimi As Variant
    Dim Klasor As Variant, Yol As String, Dosya As String, Satir As Long
    Dim Gorev_Yoneticisi As Object, Uygulamalar As Variant, Uygulama As Object
  
    Tanimli_Printer = Application.ActivePrinter
  
    Printer_Secimi = Application.Dialogs(xlDialogPrinterSetup).Show
    If Printer_Secimi = False Then Exit Sub
  
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
  
    Range("A:B").Clear
    Range("A1:B1") = Array("DOSYA ADI", "AÇIKLAMA")
    Range("A1:B1").Font.Bold = True
    Satir = 2
  
    Set Klasor = CreateObject("Shell.Application").BrowseForFolder(0, "Klasör Seçiniz...", 1)
                      
    If Klasor Is Nothing Then Exit Sub
      
    Yol = Klasor.Items.Item.Path & Application.PathSeparator
  
    Dosya = Dir(Yol & "*.*")
  
    While Dosya <> ""
        DoEvents
        CreateObject("Shell.Application").Namespace(0).ParseName(Yol & Dosya).InvokeVerb ("Print")
        Cells(Satir, 1) = Dosya
        Cells(Satir, 2) = "Çıktı Alındı"
        Satir = Satir + 1
        Dosya = Dir
    Wend
  
    Range("A:B").EntireColumn.AutoFit
  
    Application.Wait Now + TimeValue("00:00:10")
  
    Set Gorev_Yoneticisi = GetObject("winmgmts:")
    Set Uygulamalar = Gorev_Yoneticisi.ExecQuery("Select * from Win32_Process")
  
    On Error Resume Next
  
    For Each Uygulama In Uygulamalar
        If InStr(1, Uygulama.Name, "Adobe", vbTextCompare) > 0 Or _
           InStr(1, Uygulama.Name, "OneNote", vbTextCompare) > 0 Then
            Uygulama.Terminate
        End If
    Next
  
    On Error GoTo 0
  
    Application.ActivePrinter = Tanimli_Printer
  
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
  
    If Range("A2") = "" Then
        MsgBox "Yazdırılacak dosya bulunamadı!", vbExclamation
    Else
        MsgBox "Seçtiğiniz klasördeki dosyalar yazdırılmıştır.", vbInformation
    End If
End Sub
Korhan Hocam Selam,

Yazmış olduğunuz kodda güncelleme konusunda destek olabilir misiniz.

Kodu sadeleştirmeye çalıştım ama yapamadım.
Klasör seçimi, Yazıcı Seçimi,
Farklı bir çalışmama eklenti olarak klasör içerisindeki dosyaları yazdırmak istedim.

PHP:
Option Explicit

Sub Klasordeki_Dosyalari_Yazdir()
Dim Tanimli_Printer As String, Printer_Secimi As Variant
Dim Gorev_Yoneticisi As Object


Tanimli_Printer = Application.ActivePrinter
   
    Printer_Secimi = Application.Dialogs(xlDialogPrinterSetup).Show
    If Printer_Secimi = False Then Exit Sub
   
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
   
    Set Klasor = CreateObject("Shell.Application").BrowseForFolder(0, "Klasör Seçiniz...", 1)
                       
    If Klasor Is Nothing Then Exit Sub
       
    Yol = Klasor.Items.Item.Path & Application.PathSeparator
   
    Dosya = Dir(Yol & "*.*")
   
    While Dosya <> ""
        DoEvents
        CreateObject("Shell.Application").Namespace(0).ParseName(Yol & Dosya).InvokeVerb ("Print")
    Wend
       
     Application.Wait Now + TimeValue("00:00:10")
   
    Set Gorev_Yoneticisi = GetObject("winmgmts:")
    Set Uygulamalar = Gorev_Yoneticisi.ExecQuery("Select * from Win32_Process")
   
    On Error Resume Next
   
     On Error GoTo 0
   
    Application.ActivePrinter = Tanimli_Printer
   
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
   
    MsgBox "Seçtiğiniz klasördeki dosyalar yazdırılmıştır.", vbInformation
   
    End Sub
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,190
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Sadeleştirmekten kastınız nedir?
 

gicimi

Altın Üye
Katılım
3 Şubat 2008
Mesajlar
593
Excel Vers. ve Dili
Office 2016 Eng. 64 Bit
Altın Üyelik Bitiş Tarihi
21-11-2024
Korhan Hocam,
Klasör seçimi, Yazıcı Seçimi, yapıp çıktı almak istiyorum.
Excele herhangi bir şey yazdırmasına gerek yok.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,190
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Deneyiniz.

C++:
Option Explicit

Sub Klasordeki_Dosyalari_Yazdir()
    Dim Tanimli_Printer As String, Printer_Secimi As Variant
    Dim Klasor As Variant, Yol As String, Dosya As String, Say As Long
    Dim Gorev_Yoneticisi As Object, Uygulamalar As Variant, Uygulama As Object
    
    Tanimli_Printer = Application.ActivePrinter
    
    Printer_Secimi = Application.Dialogs(xlDialogPrinterSetup).Show
    If Printer_Secimi = False Then Exit Sub
    
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
        
    Set Klasor = CreateObject("Shell.Application").BrowseForFolder(0, "Klasör Seçiniz...", 1)
                        
    If Klasor Is Nothing Then Exit Sub
        
    Yol = Klasor.Items.Item.Path & Application.PathSeparator
    
    Dosya = Dir(Yol & "*.*")
    
    While Dosya <> ""
        DoEvents
        Say = Say + 1
        CreateObject("Shell.Application").Namespace(0).ParseName(Yol & Dosya).InvokeVerb ("Print")
        Dosya = Dir
    Wend
    
    Application.Wait Now + TimeValue("00:00:10")
    
    Set Gorev_Yoneticisi = GetObject("winmgmts:")
    Set Uygulamalar = Gorev_Yoneticisi.ExecQuery("Select * from Win32_Process")
    
    On Error Resume Next
    
    For Each Uygulama In Uygulamalar
        If InStr(1, Uygulama.Name, "Adobe", vbTextCompare) > 0 Or _
           InStr(1, Uygulama.Name, "OneNote", vbTextCompare) > 0 Then
            Uygulama.Terminate
        End If
    Next
    
    On Error GoTo 0
    
    Application.ActivePrinter = Tanimli_Printer
    
    Set Klasor = Nothing
    Set Gorev_Yoneticisi = Nothing
    Set Uygulamalar = Nothing
    
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    
    If Say = 0 Then
        MsgBox "Yazdırılacak dosya bulunamadı!", vbExclamation
    Else
        MsgBox "Seçtiğiniz klasördeki dosyalar yazdırılmıştır.", vbInformation
    End If
End Sub
 

gicimi

Altın Üye
Katılım
3 Şubat 2008
Mesajlar
593
Excel Vers. ve Dili
Office 2016 Eng. 64 Bit
Altın Üyelik Bitiş Tarihi
21-11-2024
Teşekkürler…
 

bjk55

Altın Üye
Katılım
29 Mart 2010
Mesajlar
184
Excel Vers. ve Dili
TÜRKÇE - MİCROSOFT OFFİCE PROFESSİONAL PLUS 2021
Altın Üyelik Bitiş Tarihi
05-03-2036
Merhaba ben Excel de A sutunun da yazılan jpg ya da jpeg dosyalarının excelde ki sırayla yazılmasını istiyorum ne yapmam gerek
 

Ekli dosyalar

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,190
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Bu dosyalar nerede? Dosya yolu belli mi?
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,190
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Printer seçimi yapmak istiyor musunuz?
 
Üst