Sıra İle Dilekçe Yazma Veya Toplu Dilekçe Yazdırma

Katılım
18 Nisan 2008
Mesajlar
19
Excel Vers. ve Dili
xls
MERHABALAR,

Ekte ki dosyada listeden kişi seçip ilgili bilgilerini dilekçeye getirmesi ve yandaki botonların aktif hale getirilmesi gerekmektedir. Yardımlarınız için şimdiden teşekkürler.

İyi Çalışmalar..

Listeden isim seç : butona bastığımda isim listesinden isim seçtiğimde kırmızı olan yerlere seçili kişinin bilgileri gelmesi gerekiyor.
Diğer kişi : butona bastığımda seçili kişiden sonraki isim gelmesi gerekiyor. Ve kırmızı olan yerlere sıradaki kişinin bilgileri gelmesi gerekiyor.
Sayfayı yazdır : butona bastığımda ekrandaki seçili olan kısmın yazıcıda yazdırılması gerekiyor.
Tüm listeyi yazdır : buyona basıldığında listede olan kişilerin bilgilerini getirip otomatik olarak tek tek yazıcıdan yazdırabilirmiyiz?
 

Ekli dosyalar

Katılım
18 Nisan 2008
Mesajlar
19
Excel Vers. ve Dili
xls
MERHABALAR,

Ekte ki dosyada listeden kişi seçip ilgili bilgilerini dilekçeye getirmesi ve yandaki botonların aktif hale getirilmesi gerekmektedir. Yardımlarınız için şimdiden teşekkürler.

İyi Çalışmalar..

Listeden isim seç : butona bastığımda isim listesinden isim seçtiğimde kırmızı olan yerlere seçili kişinin bilgileri gelmesi gerekiyor.
Diğer kişi : butona bastığımda seçili kişiden sonraki isim gelmesi gerekiyor. Ve kırmızı olan yerlere sıradaki kişinin bilgileri gelmesi gerekiyor.
Sayfayı yazdır : butona bastığımda ekrandaki seçili olan kısmın yazıcıda yazdırılması gerekiyor.
Tüm listeyi yazdır : buyona basıldığında listede olan kişilerin bilgilerini getirip otomatik olarak tek tek yazıcıdan yazdırabilirmiyiz?

Arkadaşlar konu ile ilgili desteğinizi beklerim.
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,361
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,

Adres Mektup Birleştirmeyi düşündünüz mü?

Ne formül ne de kod yazmaya gerek kalır o zaman.
 

muhasebeciyiz

Altın Üye
Katılım
10 Şubat 2006
Mesajlar
561
Excel Vers. ve Dili
Office 2016
64 Bit
Altın Üyelik Bitiş Tarihi
21-12-2027
Excel Adres-Mektup Birleştirme(Mail Merge)

Bir mektupta adres alanları, etiket formu ve zarfların basılması için yapılan adres verisi ve alanların birleştirme işlemine Adres-Mektup Birleştirme denir. Bu işlemler için adresleri yada gereken verileri daha önceden oluşturmak gerekir. Adres bilgileri, Word’de bir tablo, Excel’de bir tablo yada Outlook’ta hazırlanmış bir adres listesi olabilir. Birleştirme işlemi şu alanlarda yapılır:
a) Form Mektupları

Bir mektubun hazırlanarak çok sayıda adrese gönderilmesi ile yapılan düzenlemedir. Örneğin bir yıl sonu mutabakat mektubunu çok sayıda kişiye göndermek istiyorsunuz, bu durumda bir mektup formu hazırlayarak mektubun gideceği kişilerin adreslerini mektup içine yerleştirebilirsiniz. Ardından mektubu istenildiği kadar kişiye postalamak üzere bastırabilirsiniz.
b) Mektup Formları

Tıpkı bankaların VISA ödemeleri için gönderdikleri yazılara benzer. Zaten aynı mektup tasarımı birçok kişi için kullanılmaktadır.
Mektup Formları Yaratma



1) Araçlar-Adres-Mektup Birleştirme komutu seçilir.

2) Asıl belge bölümünden Yarat düğmesi tıklanır.

3) Form Mektupları seçilir.

4) Adres-Mektup birleştir işlemine mektubun yazıldığı belge üzerinde başlasaydınız Etkin Pencere seçeneği seçilir.

5) Veri Kaynağı bölümünden Veri al düğmesi tıklanır. Eğer adresler yeni yaratılacaksa Veri kaynağı yarat, eğer adresler daha önce bir dosyaya kaydedilmişse Veri kaynağı aç, eğer adreslere Outlook’tan erişilecekse o zaman Adres defterini kullan seçeneği kullanılır.

6) Veri kaynağı aç seçeneği seçilmişse bilgilerin bulunduğu dosya seçilir ve Aç düğmesi tıklanır.

7) Daha sonra Ana belge düzenle düğmesi tıklanarak belge üzerinde birleştirme alanlarının eklenmesine geçilir.

8) Belgeye eklenen Adres-Mektup birleştirme araç çubuğunda yer alan alanlardan yararlanılarak işlemlere devam edilir. Birleştirme alanı ekle düğmesine tıklanarak istenilen alanlar mektuba eklenir.

9) Ardından Yeni belgeye birleştir yada Yazıcıya birleştir düğmeleri tıklanarak birleştirme işlemi yapılır.
c) Zarf Çekme

Zarfların üzerine de baskı yapılabilir. Genelde etiketler çekilip zarf üzerine yapıştırıldığı için pek kullanılmaz. Bu işlem için zarfların yazıcıya giriyor olması gerekir. Ardından yapılacak işlemler aynı etiket çekmeye benzer.
d) Katalog Çekme

Katalog çekmek de hemen hemen aynı şekilde yapılan bir işlemdir. Katalog olarak bir ürün listesi, telefon fihristi vb. belgeleri yaratmak için de kullanılabilir.
SAYFA YAPISI

Sayfanın dikey yada yatay olması, sayfa kenarlarının ayarları, Üstbilgi ve Altbilgi ayarları ve yazdırılacak alan gibi ayarları yapmak için Dosya menüsünde yer alan Sayfa Yapısı seçeneği kullanılır. Burada 4 tane sekme vardır.

a) Sayfa sekmesi: Kağıt yönlendirmesi (yatay-dikey) ve Ölçek kutusundan büyütme-küçültme gibi ayarlar yapılır.

b) Kenar Boşlukları: Sayfaların üst, alt, sağ ve sol kenar boşlukları belirlenir. Ayrıca Üstbilgi-Altbilgi alanlarının üstten ve alttan uzaklıkları da ayarlanır. Yazıcıdan çıkartılacak veri alanlarının sayfanın yatay veya dikey olarak ortalanması işlemi de buradan yapılır.

c) Üstbilgi/Altbilgi: Her sayfada çıkması istenen bilgilerin (örneğin; zaman, kullanıcı adı, firma adı) girildiği yerdir. Daha önce yaratılmış Altbilgi/Üstbilgi dışında Özel Üstbilgi/Özel Altbilgi düğmelerinden de kendi istediğiniz bilgileri de buradan girebilirsiniz. Ayrıca Baskı Önizleme de buradan kullanılabilir.

d) Çalışma Sayfası: Yazdırma alanının, tekrar edilmesi istenen sütun ve satır başlıklarının ve diğer yazdırılması istenen öğelerin ayarlandığı seçenektir. Birden çok sayfaya bölünmüş bir sayfayı yazdırmak için Excel 2 yol izler;

Önce aşağıya sonra yana yolunda birden fazla sayfa olan sayfanın ilk sayfası yazdırıldıktan sonra 1. sayfanın alt kısmı yazdırılır. Sonra birinci sayfanın yandan taşan fazlası yazdırılır. Önce yana sonra aşağıya yönteminde ise birinci sayfa yazdırıldıktan sonra birinci sayfanın sağ yan fazlası olan sayfa ikinci olarak basılır. Yazdırma alanı kutusu yazdırılacak alan adresini girmeniz gereken yerdir.
Yazdır kutusu seçenekleri

Klavuz çizgileri işaretliyse belge yazıcıdan çıkarken klavuz çizgileri de bastırılacaktır. Onay kaldırılırsa yalnız yapılan kenarlıklar bastırılacaktır. Notlar, hücrelere girilen notları da bastırmak istiyorsanız bu seçenek onaylanır. Taslak kalitesi, yazıcıdan çıktı hızını artırmak için kullanılır. Siyah ve beyaz, verilerinizi yada grafiklerinizi renkli yapmanıza rağmen siyah-beyaz yazıcı kullanılıyorsanız bu seçeneği seçmeniz gerekir. Satır ve sütun başlıkları satır ve sütun başlıklarını da belgenize dahil etmek için kullanırız.
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,361
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,

Modüldeki Kodlar

Kod:
Option Explicit
Public BsNo As Integer
Public BtNo As Integer
Public MakNo As Integer
Kod:
Sub FormAc()
    UserForm1.Show
End Sub

Kod:
Sub Yazdir()
 
    Dim shD As Worksheet, _
        shL As Worksheet, _
        i   As Integer, _
        j   As Integer, _
        Frk As String, _
        Ucr As String, _
        Bes As String, _
        OzS As String
 
    Set shD = Sheets("DİLEKÇE")
    Set shL = Sheets("LİSTE")
 
    For i = BsNo + 1 To BtNo + 1
 
        shD.Range("A10") = "Sayın " & shL.Range("C" & i)
        shD.Range("A13") = "XX Şireti'nde " & Format(shL.Range("D" & i), "dd.mm.yyyy") & " tarihinden beri " & shL.Range("B" & i) & " Sicil numarası ile çalışmaktasınız."
        Frk = KemalYazTL(shL.Range("G" & i), "Y")
        Ucr = KemalYazTL(shL.Range("H" & i), "Y")
        Bes = KemalYazTL(shL.Range("E" & i), "Y")
        OzS = KemalYazTL(shL.Range("F" & i), "Y")
 
        shD.Range("A18") = "Bu kapsamda yapılan değerlendirme sonucunda ücretiniz, Mayıs 2013 tarihinden geçerli olmak üzere ÜCRET FARKI(" & _
                            Format(shL.Range("G" & i), "#,##0.00") & ") TL (" & _
                            Frk & ") net nakit artış ile toplam BRÜT ÜCRET " & _
                            Format(shL.Range("H" & i), "#,##0.00") & ") TL (" & Ucr & ") olmuştur."
 
        shD.Range("A23") = "•      Bireysel Emeklilik Sigortası poliçesi ile; BES (" & _
                           Format(shL.Range("E" & i), "#,##0.00") & ") TL (" & Bes & "),"
 
        shD.Range("A24") = "•      Sağlık sigortası poliçesi ile; ÖZEL SAĞLIK (" & _
                           Format(shL.Range("F" & i), "#,##0.00") & ") TL (" & OzS & ") ilave katkı salanmıştır"
 
        shD.PrintOut
 
        Application.Wait (Now + TimeValue("0:00:02"))
 
    Next i
 
End Sub

Kod:
Function KemalYazTL(Sayi As Variant, Tur As String)
    Dim B
    Dim Sayı    As Long
    Dim i       As Integer
    Dim k       As Integer
    Dim Kusurat As Integer
    Dim Yazi    As String
    Dim YaziK   As String
 
 
    If Tur = "b" Then Tur = "B"
    If Tur = "y" Then Tur = "Y"
    If Tur = "k" Then Tur = "K"
 
    B = Array("", "", "bin", "milyon", "milyar", "trilyon")
    Dim A(0 To 2, 0 To 9)
    A(0, 0) = ""
    A(0, 1) = "yüz"
    A(0, 2) = "ikiyüz"
    A(0, 3) = "üçyüz"
    A(0, 4) = "dörtyüz"
    A(0, 5) = "beşyüz"
    A(0, 6) = "altıyüz"
    A(0, 7) = "yediyüz"
    A(0, 8) = "sekizyüz"
    A(0, 9) = "dokuzyüz"
 
    A(1, 0) = ""
    A(1, 1) = "bir"
    A(1, 2) = "iki"
    A(1, 3) = "üç"
    A(1, 4) = "dört"
    A(1, 5) = "beş"
    A(1, 6) = "altı"
    A(1, 7) = "yedi"
    A(1, 8) = "sekiz"
    A(1, 9) = "dokuz"
 
    A(2, 0) = ""
    A(2, 1) = "on"
    A(2, 2) = "yirmi"
    A(2, 3) = "otuz"
    A(2, 4) = "kırk"
    A(2, 5) = "elli"
    A(2, 6) = "altmış"
    A(2, 7) = "yetmiş"
    A(2, 8) = "seksen"
    A(2, 9) = "doksan"
 
    Kusurat = Format((Sayi - Int(Sayi)) * 100, "00")
    Sayi = String(15 - Len(Trim(Int(Sayi))), "0") + Trim(Int(Sayi))
 
    Yazi = ""
    YaziK = ""
 
    For i = 1 To Len(Sayi)
        If i Mod 3 = 1 Then
           k = k + 1
           If (Mid(Sayi, Len(Sayi) - i - 1, 3)) <> "000" Then Yazi = B(k) & Yazi
        End If
        Yazi = A(i Mod 3, Val(Mid(Sayi, Len(Sayi) + 1 - i, 1))) & Yazi
    Next
    If Left(Yazi, 6) = "birbin" Then Yazi = Replace(Yazi, "birbin", "bin")
 
    If Yazi = "" Then Yazi = "Sıfır"
 
    If Tur = "B" Then
        Yazi = UCase(Replace(Replace(Yazi, "i", "İ"), "ı", "I"))
    ElseIf Tur = "Y" Then
        Yazi = Application.WorksheetFunction.Proper(Yazi)
    End If
 
 
    'If Kusurat > 0 Then yazi = yazi + A(2, Val(Left(Kusurat, 1))) + A(1, Val(Right(Kusurat, 1))) + " Kr"
    If Kusurat > 0 Then YaziK = A(2, Val(Left(Kusurat, 1))) + A(1, Val(Right(Kusurat, 1)))
 
    If Tur = "B" Then
        YaziK = UCase(Replace(Replace(YaziK, "i", "İ"), "ı", "I"))
    ElseIf Tur = "Y" Then
        YaziK = Application.WorksheetFunction.Proper(YaziK)
    End If
 
    Yazi = Yazi & " TL"
    If Kusurat > 0 Then Yazi = Yazi & " " & YaziK & " Kr"
    KemalYazTL = Yazi
End Function

Formdaki Kodlar :

Kod:
Private Sub ComboBox1_Change()
    TextBox1.Value = ComboBox1.ListIndex + 1
    TextBox2.Value = TextBox1.Value
 
    If Val(TextBox1.Value) = 0 Then
        TextBox1.Value = 1
        TextBox2.Value = MakNo
    End If
 
    BsNo = TextBox1.Value
    BtNo = TextBox1.Value
End Sub
Kod:
Private Sub CommandButton1_Click()
 
    Yazdir
 
End Sub
Kod:
Private Sub CommandButton2_Click()
    If Not Val(TextBox1.Value) + 1 > MakNo Then
        TextBox1.Value = Val(TextBox1.Value) + 1
        TextBox2.Value = TextBox1.Value
        BsNo = TextBox1.Value
        BtNo = TextBox1.Value
        ComboBox1.Value = Sheets("LİSTE").Range("C" & BsNo + 1)
    End If
End Sub

Kod:
Private Sub CommandButton3_Click()
    TextBox1.Value = 1
    TextBox2.Value = MakNo
    BsNo = 1
    BtNo = MakNo
End Sub
Private Sub CommandButton4_Click()
    Unload Me
End Sub

Kod:
Private Sub UserForm_Initialize()
 
    Dim shD As Worksheet, _
        shL As Worksheet
 
    Set shD = Sheets("DİLEKÇE")
    Set shL = Sheets("LİSTE")
 
    MakNo = shL.Cells(Rows.Count, "A").End(3).Row - 1
    If MakNo = 0 Then
        MsgBox "Personel Listesi Boş....", vbCritical
        Unload Me
        Exit Sub
    End If
 
    Application.ScreenUpdating = False
 
    ComboBox1.RowSource = shL.Range("C2:C" & MakNo + 2).Address(external:=True)
 
    Application.ScreenUpdating = True
 
    BsNo = 1
    BtNo = 1
 
    TextBox1.Value = BsNo
    TextBox2.Value = BtNo
 
    ComboBox1.ListIndex = 0
 
End Sub
 

Ekli dosyalar

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,361
Excel Vers. ve Dili
Ofis 365 Türkçe
Sonuç ne oldu merak ettim. :)
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,361
Excel Vers. ve Dili
Ofis 365 Türkçe
Kontrol etme imkanım olmadı yeni bakabileceğim. İş yoğunluğu nedeniyle çalışma güzel bir çalışma olduğunu düşünüyorum şimdiden teşekkür ederim. Kontrolden sonra geri dönüş yapacağım.
3 Haziranda foruma girmişsiniz ama hala kontol edemediniz galiba :biggrin:
 

AkarUgurlu

Altın Üye
Katılım
21 Aralık 2011
Mesajlar
3
Excel Vers. ve Dili
2013 11
Altın Üyelik Bitiş Tarihi
24-09-2025
Ellerinize sağlık Arkadaşlar,
Bu formatı alıp kendime uyarladım çokta hoş oldu ancak Combobox ta açılan kişilerden sadece istediklerimi yazdırabilsem harika olacaktı.Eğer mümkün ise yardımlarınızı bekliyorum.
 
Üst