PDF dosyasını arka plan yapmak

balanar

Altın Üye
Katılım
22 Şubat 2021
Mesajlar
347
Excel Vers. ve Dili
Excel 2007
Altın Üyelik Bitiş Tarihi
09-03-2027
Set s1 ve Set s2 ile Liste ve belge sayfalarına kısa isim veriyoruz.
son değişkeni Liste sayfasında A sütunundaki son dolu satır numarasını buluyor.
D12:H18 aralığındaki verileri siliyoruz, bunu D12 değil E12 olarak düzeltmeliyiz.
For next döngüsünde kisi değişkenine 2'den son değişkenine kadar değer vermesini istiyoruz
Liste sayfasındaki her satır ayrı ayrı kontrol ediliyor, eğer E sütunu doluysa İf koşuluyla işlem yaptırıyoruz
Application.enableevents=false ile sayfa olaylarına bağlı makroların çalışmasını geçici olarak durduruyoruz, makro sonunda tekrar aktifleştireceğiz. Bunu yapmazsak her kişi değişiminde sayfada mevcut kodlar çalışır.
Belge sayfasına kişinin ismini getiriyoruz. TC kimlik no, unvan ve adres bilgisi sayfadaki DÜŞEYARA formülleriyle getiriliyor.
Burdaki ikinci clearcontents satırı fazlalık, silebilirsiniz.
13:19 satırlardaki gizli satırları açıyoruz.
sonsut değişkeniyle ilgili kişinin liste sayfasındaki son dolu sütun numarasını buluyoruz.
a değişkenine 12 değerini veriyoruz, çünkü görev zamanlarını yerleştirmeye 12. satırdan yani Belge sayfasındaki E12 hücrseinden başlayacağız.
İkinci bir for next döngüsüyle kişinin liste sayfasındaki görevlerini çekmeye başlıyoruz. Burda step 3 kullandık, çünkü her görev; tarih, başlama ve bitiş olmak üzere 3 sütundan oluşuyor.
For next döngüsü içinde kişinin görev bilgilerini her satırda bir gün olacak şekilde belge sayfasına aktarıyoruz ve sonraki satıra geçmek için a değerini bir arttırıyoruz.
Bu döngü bitince boş satırları gizlemek için üçüncü bir for next döngüsü kullanıyoruz. Belge sayfasında E sütununda tarih yoksa o satırı gizliyoruz.
s2.printout ile belgesi hazırlanan kişiye ait belgeyi yazıdrıyoruz ve sonraki kişiye geçiyoruz.
sizin hakkınızı ödemek zor. Çok teşekkür ediyoruz yusuf hocam
 
Katılım
20 Ocak 2005
Mesajlar
526
Excel Vers. ve Dili
Excel 2007 Türkçe
Altın Üyelik Bitiş Tarihi
01-01-2024
Set s1 ve Set s2 ile Liste ve belge sayfalarına kısa isim veriyoruz.
son değişkeni Liste sayfasında A sütunundaki son dolu satır numarasını buluyor.
D12:H18 aralığındaki verileri siliyoruz, bunu D12 değil E12 olarak düzeltmeliyiz.
For next döngüsünde kisi değişkenine 2'den son değişkenine kadar değer vermesini istiyoruz
Liste sayfasındaki her satır ayrı ayrı kontrol ediliyor, eğer E sütunu doluysa İf koşuluyla işlem yaptırıyoruz
Application.enableevents=false ile sayfa olaylarına bağlı makroların çalışmasını geçici olarak durduruyoruz, makro sonunda tekrar aktifleştireceğiz. Bunu yapmazsak her kişi değişiminde sayfada mevcut kodlar çalışır.
Belge sayfasına kişinin ismini getiriyoruz. TC kimlik no, unvan ve adres bilgisi sayfadaki DÜŞEYARA formülleriyle getiriliyor.
Burdaki ikinci clearcontents satırı fazlalık, silebilirsiniz.
13:19 satırlardaki gizli satırları açıyoruz.
sonsut değişkeniyle ilgili kişinin liste sayfasındaki son dolu sütun numarasını buluyoruz.
a değişkenine 12 değerini veriyoruz, çünkü görev zamanlarını yerleştirmeye 12. satırdan yani Belge sayfasındaki E12 hücrseinden başlayacağız.
İkinci bir for next döngüsüyle kişinin liste sayfasındaki görevlerini çekmeye başlıyoruz. Burda step 3 kullandık, çünkü her görev; tarih, başlama ve bitiş olmak üzere 3 sütundan oluşuyor.
For next döngüsü içinde kişinin görev bilgilerini her satırda bir gün olacak şekilde belge sayfasına aktarıyoruz ve sonraki satıra geçmek için a değerini bir arttırıyoruz.
Bu döngü bitince boş satırları gizlemek için üçüncü bir for next döngüsü kullanıyoruz. Belge sayfasında E sütununda tarih yoksa o satırı gizliyoruz.
s2.printout ile belgesi hazırlanan kişiye ait belgeyi yazıdrıyoruz ve sonraki kişiye geçiyoruz.
@YUSUF44 gerçekten bende Yazıcı da sadece iki üç sayfa ancak yazdığını gördüm. Zahmet veririm diye yazmadım. Olayı siz inanılmaz çözdünüz. Bu kod sanırım başka listelemelerde kullanacağımız bir toplu yaz komutu oldu. Allah razı olsun. Nerden nereye inanılmaz sevindim. Bir örnek sonraları bir çok soruna çözüm kolaylığı sağlıyor. İyi ki varsınız. İyi ki kuruldu bu Forum. Bunları yürekten yazdığımı farkındasınızdır. Teşekkürlerimle.
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Merak edenler için belirteyim;

12. mesajdaki yöntemde, tüm personel için üretilen belgelerin topluca yazdırılabilmesi tek tuşla sağlanabilmektedir.

.
 
Katılım
20 Ocak 2005
Mesajlar
526
Excel Vers. ve Dili
Excel 2007 Türkçe
Altın Üyelik Bitiş Tarihi
01-01-2024
VErdiğim dosyadaki yaz makrosunu aşağıdakiyle değiştirmek daha iyi olur diye düşünüyorum. Çünkü denemelerimde ilk halinde tam doğru sonuç vermediğini gördüm:

PHP:
Sub yaz()
    Set s1 = Sheets("Liste")
    If ActiveSheet.Name = "Belge A5" Or ActiveSheet.Name = "Belge A4" Then
        Set s2 = ActiveSheet
    End If
    son = s1.Cells(Rows.Count, "A").End(3).Row
    [D12:H18].ClearContents
    For kisi = 2 To son
        If s1.Cells(kisi, "E") <> "" Then
            Application.EnableEvents = False
                s2.[E8] = s1.Cells(kisi, "A")
                [D12:H18].ClearContents
                Rows("13:19").EntireRow.Hidden = False
                sonsut = s1.Cells(kisi, Columns.Count).End(xlToLeft).Column
                a = 12
                For sut = 5 To sonsut Step 3
                    Cells(a, "E") = s1.Cells(kisi, sut)
                    Cells(a, "F") = s1.Cells(kisi, sut + 1)
                    Cells(a, "H") = s1.Cells(kisi, sut + 2)
                    a = a + 1
                Next
                For i = 13 To 19
                    If Cells(i, "E") <> "" Then
                        Rows(i).EntireRow.Hidden = False
                    Else
                        Rows(i).EntireRow.Hidden = True
                    End If
                Next
                s2.PrintOut
            Application.EnableEvents = True
        End If
    Next
End Sub
Yusuf bey yazdır da ikametgah adresini birinci kişiden sonra Hücre biçimini RAKAM olarak görüyor. Rakam çıkıyor ? =DÜŞEYARA(E8;Liste!$A$1:$D$38;4;0) formülü bozuluyor.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Yazdırma kodunda adresle ilgili bir işlem yok. Adres bilgisi DÜŞEYARA formülüyle geliyor. Dosyayı o haliyle (özel bilgiler olmadan elbette) paylaşır mısınız?
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Siz 2 tarih değil 8 tarih eklemişsiniz. Ben dosyayı en fazla 7 tarih olacak şekilde ayarlamıştım. 7'den fazla tarih eklemek istiyorsanız dosyada ve kodlarda değişiklik yapmak gerekir.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Bir de örnek dosyada 5. tarih bazı kişilerde boş kalmış, 6. ve sonraki günler dolu görünüyor. Bu şekilde kullanmayın. Kişinin görevli olduğu günleri arada boş kalmayacak şekilde yerleştirin.
 
Katılım
20 Ocak 2005
Mesajlar
526
Excel Vers. ve Dili
Excel 2007 Türkçe
Altın Üyelik Bitiş Tarihi
01-01-2024
Siz 2 tarih değil 8 tarih eklemişsiniz. Ben dosyayı en fazla 7 tarih olacak şekilde ayarlamıştım. 7'den fazla tarih eklemek istiyorsanız dosyada ve kodlarda değişiklik yapmak gerekir.
10 günlük yapsak kod nasıl olmalıdır. Uzunsa.. sorun yok. 2 görev belgesi veririz.
 
Üst