• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Soru Toplu tebligat gönderme

Katılım
31 Mayıs 2009
Mesajlar
14
Excel Vers. ve Dili
2007 Türkçe
Ekte sunduğum dosyada kendi çabalarımla bir çalışma yapmaya çalıştım. Dosyadaki mazbata sge ekli ve eksiz sayfalarını listedeki verilerle toplu yazdırabilirmiyim. Sge ekli sayfasında yaptığım sayfa ilerleme olayını sge eksiz sayfasında da yapmak istiyorum. Hem tek tek veri çekip hemde toplu yazdırmak amacım.

 
Son düzenleme:
Dosyanızı her niyeyse onararak açabildim.Bazı şeyler kayboldu herhalde .Sayfa ilerleme olayı gözükmüyor bende
Siz zaten dosyanızda formülle çağırıp işlemlerinizi yapmaktasınız.Siizin isteğiniz
Ekli Sge Mazbata - Sge Tebliğ Ekli - Sge Tebliğ Eksiz sayfalarının içeriğini liste sayfasından çağırıp
sonrasında otomatik olarak makro ile doldurmak sırasıyla bu 3 sayfayı yazdırmakmı istiyorsunuz vya böyle değilse örnek vererek yapmak istediğinizi manuel olarak açıklayınızx
 
Aynen hocam bu üç sayfayıda toplu olarak listedeki verileri çağırarak yazdırmak istiyorum
 


Bence; tebligat sayfasını word ortamında hazırlayın ve excel listesini posta birleştirme kısmından ilgili word dosyasına bağlayın.
Örneğin listede 100 tane kişi var. 10 15 sn gibi bir sürede tüm sayfaları hazırlamış olursunuz..

///

Alta word dosyası ekledim. Önce şablonu ayarlayın. Sonra excelde gönderilecek verilerin olduğu listeyi, hazırlanan boş şablonu ve örnek olacak dolu şablon ekleyin. Hazırlayım.

Word Şablon

Fason liste

Sadece Word dosyasını düzenleyip atarsanız listeyi bağlarım.
Hangi kutuya hangi hücre gelecek A1 B1 C1 ne nereye gibi...
İşlem çok basit.
Word postalar diye de araştırabilirsiniz.
 
Son düzenleme:
Dosyanızın tamamı çalışır vaziyette. Bu linkten indiriniz.geri dönüş yapmayı unutmayınız

Excel'de, Sge_Tebliğ_Ekli sayfasına gidin.
N19 hücresine ve altındaki hücrelere yazdırmak istediğiniz sayfa adlarını doğru bir şekilde yazın.
Örnek: N19'a Ekli_Sge_Mazbata, N20'ye Sge_Tebliğ_Ekli yazın.
Bu liste boş bırakılırsa, makro hiçbir sayfa yazdırmaz.

Dosyanız libre oficeden çevrildiği için açılışta yükleme yavaş olmaktadır
Siz makroyu dosyanıza kopyalayıp kullanınız
 
Son düzenleme:
Hocam ellerine sağlık tam istediğim gibi olmuş ancak libre Office kaynaklı bir sıkıntı var sayfa isimlerini ne yazarsam yazayım sge tebliğ ekli sayfasının kayıtlarını yazdırıyor. Bunun için her sayfada bu makroyu kopyalayıp yazmam mı gerekir
 
Kod:
Sub DilekceleriYazdirDinamik_Yeni()
    Dim wsListe As Worksheet
    Dim sonSatir As Long
    Dim i As Long
    
    Dim sayfalar As Variant
    sayfalar = Array("Ekli_Sge_Mazbata", "Sge_Tebliğ_Ekli", "Sge_Tebliğ_Eksiz")
    
    On Error Resume Next
    Set wsListe = ThisWorkbook.Sheets("Liste")
    On Error GoTo 0
    
    If wsListe Is Nothing Then
        MsgBox "'Liste' isimli sayfa bulunamadı!", vbCritical
        Exit Sub
    End If
    
    sonSatir = wsListe.Cells(wsListe.Rows.Count, "A").End(xlUp).Row
    
    Application.ScreenUpdating = False
    
    For i = 2 To sonSatir
        
        If wsListe.Cells(i, "A").Value <> "" And wsListe.Cells(i, "B").Value <> "" Then
            
            For Each sayfaAdi In sayfalar
                On Error Resume Next
                Sheets(sayfaAdi).PrintOut Copies:=1
                If Err.Number <> 0 Then
                    MsgBox "Yazdırılmak istenen '" & sayfaAdi & "' isimli sayfa bulunamadı!", vbExclamation
                    Err.Clear
                End If
                On Error GoTo 0
            Next sayfaAdi
        End If
    Next i
    
    Application.ScreenUpdating = True
    
    MsgBox "Tüm dilekçeler ve ek sayfaları yazıcıya gönderildi!", vbInformation

End Sub

Sayfa isimlerini kod içine yazdım birde böyle deneyiniz
Böylece, makroyu her çalıştırdığınızda, belirlediğiniz sayfaları yazdırmak için Sge_Tebliğ_Ekli sayfasına bağımlı kalmayacaksınız.
 
Evde Office programında denediğimde sorunsuz çalışıyordu libre Office de sıkıntı verdi
 
Maalesef sağladığınız excel kodu, Microsoft Excel'e özel bir dildir ve LibreOffice'te doğrudan çalışmaz. Bu durumun nedeni, Excel ve LibreOffice'in kendi programlama dillerine ve API'lerine sahip olmasıdır.kod LibreOffice'te doğru bir şekilde yorumlanamıyor ve muhtemelen hiçbir işlem yapmıyor ya da varsayılan bir sayfa üzerinden hata veriyor. LibreOffice'te aynı işlemi yapmak için kodu LibreOffice Basic diline çevirmeniz gerekir

Kod:
Sub DilekceleriYazdirDinamik_Yeni_LibreOffice()

    Dim oDoc As Object
    Dim oSheet As Object
    Dim oSheets As Object
    Dim oUsedRange As Object
    Dim sonSatir As Long
    Dim i As Long
    Dim sayfaAdi As Variant
    
    Dim sayfalar As Variant
    sayfalar = Array("Ekli_Sge_Mazbata", "Sge_Tebliğ_Ekli", "Sge_Tebliğ_Eksiz")

    oDoc = ThisComponent
    oSheets = oDoc.getSheets()
    
    On Error GoTo ListeSayfasiYok
    oSheet = oSheets.getByName("Liste")
    On Error GoTo 0
    
    oUsedRange = oSheet.getSpreadsheet().getUsedRange()
    sonSatir = oUsedRange.getRows().getCount()

    oDoc.lockControllers()

    For i = 1 To sonSatir
        
        If oSheet.getCellByPosition(0, i).getString() <> "" And oSheet.getCellByPosition(1, i).getString() <> "" Then
        
            For Each sayfaAdi In sayfalar
                On Error GoTo SayfaYazdirmaHatasi
                
                oSheets.getByName(sayfaAdi).Print (Array())
                
                On Error GoTo 0
            Next sayfaAdi
        End If
    Next i

    oDoc.unlockControllers()
    MsgBox "Tüm dilekçeler ve ek sayfaları yazıcıya gönderildi!", 64

    Exit Sub

ListeSayfasiYok:
    MsgBox "'Liste' isimli sayfa bulunamadı!", 16
    Exit Sub

SayfaYazdirmaHatasi:
    MsgBox "Yazdırılmak istenen '" & sayfaAdi & "' isimli sayfa bulunamadı!", 48
    Err.Clear
    Resume Next

End Sub

Deneyiniz
 
Son düzenleme:
sonSatir = oSheet.getUsedRange().Rows.Count
Bu satırda BASIC çalışma zamanı hatası '423' özellik ya da yöntem bulunamadı: getUsedRange hatası verdi hocam
 
Hocam ellerine sağlık ilk yaptığınız makroyu her sayfa için ayrı ayrı düzenledim her sayfaya toplu yazdırma butonu ekledim bu şekilde libree officede sıkıntısız yazdırdı. İlginiz için teşekkür ederim.
 
Geri
Üst