Soru klasördekileri yazdırma sorunu

NADİR YILDIZ

Altın Üye
Katılım
7 Ocak 2006
Mesajlar
1,326
Excel Vers. ve Dili
2016 Türkçe
Altın Üyelik Bitiş Tarihi
09-02-2026
arkadaşlar
gelen pdf dosyasındaki dosyaları excelde yazdırıyorum.
yazdırılanları..yazdırılan pdf dosyasına aktarıyor..
gelen pdf dosyasında 20 tane ft varsa 3-4 tanesini yazdırıyor diğerlerini yazdırmıyor
başka bilgisayarda 20 tanenin hepsini yazdırıyor
bu sorun nereden kaynaklanmış olabilir.

iyi çalışmalar
 

Ekli dosyalar

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,246
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Eksik çıktı aldığını düşündüğünüz pc'de kodu F8 ile adım adım çalıştırıp sorunun kaynağını tespit etmeye çalışmalısınız.
 

NADİR YILDIZ

Altın Üye
Katılım
7 Ocak 2006
Mesajlar
1,326
Excel Vers. ve Dili
2016 Türkçe
Altın Üyelik Bitiş Tarihi
09-02-2026
Günaydın korhan bey

F8 ile hatalı satır bulunuyormuş onuda öğrendim sayenizde.teşekkürler.
sorun bu satırdaymış nasıl bir düzeltme yapmamız gerekiyor yardımcı olabilirmisiniz

iyi çalışmalar
 

Ekli dosyalar

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,246
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
O bölümde yazdırılan pdf dosyaları klasörü içinde olan pdf dosyaları döngüye alınıyor ve bir isim listesi oluşturuluyor. Sonra gelen pdf dosyaları klasöründe ki pdf dosyaları sorgulanıyor. Eğer ilgili pdf dosyası yazdırılan pdf dosyaları klasöründe varsa donguden çıkılıyor.

Yani eğer aynı ismi taşıyan pdf dosyalarını yazdırmaya çalışırsanız kod eksik çalışıyormuş hissi verebilir. Deneme yapmak için yazdırılan pdf dosyaları klasörünün içini komple silerek test edebilirsiniz.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,246
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Benzer bir alternatif kodlamayı linkte bulabilirsiniz.

 

NADİR YILDIZ

Altın Üye
Katılım
7 Ocak 2006
Mesajlar
1,326
Excel Vers. ve Dili
2016 Türkçe
Altın Üyelik Bitiş Tarihi
09-02-2026
korhan üstad teşekkür ederim.
bu çalışmada gerçekten çok güzel
ancak benim çalışmamda gelen pdf klasörüne tarih aralığında pdf ft ları indiriyorum.örneğin 1.-15 tarih aralığında bunları dökünce yazdırılan klasörüne atıyor.daha sonra 1-30 tarih aralığında pdf ft ları indiriyorum.daha önce yazdırılan klasöründekilerin dışındaki pdf ft ları döküyor.yazdırılanları dökmüyor..çalışma prensibi bu şekilde ana makinada bunları bu şekilde dökebiliyorum sorun yok zaten .ancak diğer makinalarda bu dosyayı kullanarak dökmeye kalkınca 20 ft dan 3-5 tanesini döküyor..diğerlerini dökmüyor.sıkıntıyı çözemedim.F8 ile hata veren bir yer var ancak çözemedim.benim dosyam üzerinden yardımcı olabilirseniz çok memnun olurum

iyi çalışmalar
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,246
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Sıkıntı olan bilgisayarda o satırda oluşan değerleri mouse ile üzerine gelip kontrol etmeniz gerekiyor. Çalışan bilgisayar ile çalışmayan bilgisayarda oluşan değerleri karşılaştırıp hataya sebep olan durumu tespit etmelisiniz.

Emin değilim ama belki dosya uzantılarında büyük harfle yazılmış olan varsa bu sorun yaratıyor olabilir.

If Right(bul, 4) = ".pdf" Then

Bu bölümü aşağıdaki gibi değiştirip bir deneyin.

If Lcase(Right(bul, 4)) = ".pdf" Then
 

NADİR YILDIZ

Altın Üye
Katılım
7 Ocak 2006
Mesajlar
1,326
Excel Vers. ve Dili
2016 Türkçe
Altın Üyelik Bitiş Tarihi
09-02-2026
maalesef sorun devam ediyor üstad
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,246
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Evde "Printer" olmadığı için deneme şansım yok.

Aşağıdaki kodu siz deneyiniz.

C++:
Option Explicit

#If VBA7 Then
    Private Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
    (ByVal hwnd As LongPtr, ByVal lpOperation As String, ByVal lpFile As String, _
    ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As LongPtr) As LongPtr
#Else
    Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
    (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
    ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
#End If

Private Sub PrintFile(ByVal strPathAndFilename As String)
    Call ShellExecute(Application.hwnd, "print", strPathAndFilename, vbNullString, vbNullString, 0)
End Sub

Private Sub CommandButton1_Click()
    Dim Yazdirilan_Dosyalar_Klasoru As String, Gelen_Dosyalar_Klasoru As String
    Dim Yazdirilan_Dosya As Object, Dosya As String, Say As Long, Kontrol As Boolean
    
    Gelen_Dosyalar_Klasoru = "C:\Users\Hp-02\Desktop\FATURA DÖKÜMLERİ\PETTAG\GELEN PDF DOSYALARI\"
    Yazdirilan_Dosyalar_Klasoru = "C:\Users\Hp-02\Desktop\FATURA DÖKÜMLERİ\PETTAG\YAZDIRILAN PDF DOSYALARI\"
    
    Dosya = Dir(Gelen_Dosyalar_Klasoru & "*.pdf", vbDirectory)
    
    While Dosya <> ""
        If InStr(Dosya, ".pdf") > 0 Then
        If VBA.CreateObject("Scripting.FileSystemObject").Getfolder(Yazdirilan_Dosyalar_Klasoru).Files.Count = 0 Then GoTo Devam
            For Each Yazdirilan_Dosya In VBA.CreateObject("Scripting.FileSystemObject").Getfolder(Yazdirilan_Dosyalar_Klasoru).Files
                If Yazdirilan_Dosya = Dosya Then
                    Kontrol = True
                    Exit For
                End If
            Next
            
Devam:
            If Kontrol = False Then
                DoEvents
                PrintFile (Gelen_Dosyalar_Klasoru & Dosya)
                Application.Wait Now + TimeSerial(0, 0, 1)
                Say = Say + 1
                VBA.CreateObject("Scripting.Filesystemobject").MoveFile _
                Gelen_Dosyalar_Klasoru & Dosya, Yazdirilan_Dosyalar_Klasoru & Dosya
            End If
        End If
        
        Kontrol = False
        Dosya = Dir
    Wend

    If Say = 0 Then
        MsgBox "Klasörde dosya bulunamadı!", vbCritical
    Else
        MsgBox Say & " adet dosya yazıcıya gönderilmiştir.", vbInformation
    End If
End Sub
 
Üst