• DİKKAT

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

çalışma sayfası yazdırma

  • Konbuyu başlatan Konbuyu başlatan kmlblgn
  • Başlangıç tarihi Başlangıç tarihi
Katılım
29 Aralık 2007
Mesajlar
82
Excel Vers. ve Dili
2016 tr
Merhaba...
Arkadaşlar öğrencilerime verdiğim ödevde isimlerini yazmak istiyorum
ama bu biraz zahmetli ve hataya açık bir alan olduğu için sıkıntılar yaşıyorum.

bunu otomatik olarak yapmak için yardımlarınızı bekliyorum.
- öğrencilerimin sınıf, okul no, adı-soyadı bilgilerinin olduğu 100 kişilik bir listem var. bu listedeki öğrenci sayısı değişiklik gösterebiliyor.

- 5. sınıf ödevi için listeden 5. sınıfları alacak ve isimlerini yazarak her biri için ayrı ayrı çalışma kağıdını yazdıracak.
bunu 6-7 ve 8 ler içinde yapacak.
Eğer bu yazdırma işleminin tamamını bir tuşa basarak yapabilirsem çok daha güzel olur.

Bazen hatalar yapıyorum tekrar çıkarmak falan gerekiyor.
Bunları ortadan kaldırmak için böyle bir yol düşündüm ama işe yarar mı yapılabilir mi bilmiyorum.

Yardımınız için çok sağolun...
 

Ekli dosyalar

Arkadaşlar allah rızası için anlayan hiç arkadaşımız yok mu?
Lütfen yardımcı olun...
Elle yapıyorum ama çok zaman alıyor ve hata yapıyorum yenden yazdırman zorunda kalıyorum.
Zaman almasını söylemiyorum bile...

Biliyorum yapması zor bir iş
ama yardımlarınız olmadan hiç başaramayacağım bir iş
Lütfen en azından bir deneseniz...
 
Bu da VBA kodları ile yapılmıştır.
 

Ekli dosyalar

suleyman242 yardımın için çok teşekkür ederim.
Zaman ve emeğini ayırmışsın.

Hocam istediğim bir yazdırma butonu ile tamamını yazdırmak.
örneğin.
5. sınıfların ödevini yazdırmak için tıkladığımda listedeki tüm 5. sınıf öğrencilerini bulup onların bilgilerini doldurarak her biri için çıktı alacak.
 
dalgalikur, dosyayı inceledim hocam eline sağlık.
Güzel bir çalışma olmuş istediğimi yansıtıyor.
Sormak istediğim küçük bir ayrıntı var
Açılır listede sayfaların isimleri çıkıyor seçim yapmam için.
Sayfa sayısını artırsam yine açılır pencerede görünür mü?

Ellerin dert görmesin...
 
dalgalikur hocam bi sorum daha olacak ve bu sefer ki acil

Hocam seçimleri yapıp yazdır dediğimde arkasını ve önünü peşpeşe hemen yazdırıyor.
Ama mantık olarak benim kağıdı alıp ters çevirip koymam bu sayedede ödevi önlü arkalı yapmam gerekiyor.

İşinize karışmak yada akıl vermek olarak algılamazsanız bir fikrim var.
ödevlerin arka sayfalarında özel ayrıntı yok yani hepsi aynı her çocuk için seçili ödevin sadece ön yüzünü yazdırsak sonra arka tarafı için hepsine aynısını basabiliriz.

örneğin.
tüm 5. sınıflarda ön yüz öğrenci bilgisi içerdiğinden her çocukta farklı çıktı lazım ama tüm 5 lerin arka yüzleri aynı bunu kullanabilirmiyiz acaba!
 
Açılır listede sayfaların isimleri çıkıyor seçim yapmam için.
Sayfa sayısını artırsam yine açılır pencerede görünür mü?
Evet görünür.


dalgalikur hocam bi sorum daha olacak ve bu sefer ki acil

Hocam seçimleri yapıp yazdır dediğimde arkasını ve önünü peşpeşe hemen yazdırıyor.
Ama mantık olarak benim kağıdı alıp ters çevirip koymam bu sayedede ödevi önlü arkalı yapmam gerekiyor.

İşinize karışmak yada akıl vermek olarak algılamazsanız bir fikrim var.
ödevlerin arka sayfalarında özel ayrıntı yok yani hepsi aynı her çocuk için seçili ödevin sadece ön yüzünü yazdırsak sonra arka tarafı için hepsine aynısını basabiliriz.

örneğin.
tüm 5. sınıflarda ön yüz öğrenci bilgisi içerdiğinden her çocukta farklı çıktı lazım ama tüm 5 lerin arka yüzleri aynı bunu kullanabilirmiyiz acaba!

Sadece ilk sayfanın mı yazdırılmasını istiyosunuz?
 
sadece birinci sayfayı yazdırmak için formun kod editörünü açın

Kod:
syfOdev.PrintOut
satırını aşağıdaki gibi yapın


Kod:
syfOdev.PrintOut 1, 1
 
dalgalikur hocam merhaba.
Kusuruma bakmayın dün geri dönemedim kızım rahatsızlandı onunla ilgilendim.

Hocam şimdi dediğinizi yaptım oldu.
Yalnız sayfaların arka yüzünü yazdırmak için ne yapacağım?


Hocam
Şimdi size şöyle anlatayım
Öğrencilere verdiğim ödev arkalı önlü bir sayfa
Öğrenciye ait değişken bilgilerin bulunduğu sayfa ön sayfa
o yüzden bu sayfayı her öğrenci için ayrı ayrı yazdırmamız gerekiyor.
Arka sayfa ise öğrenciye ait değişken bulundurmadığından aynı sınıfa giden tüm öğrenciler için ( örneğin tüm 5 ler için ) hep aynı bilgiyi basabiliriz.

yazdırma için verdiğiniz kodu kullanınca istediğim gibi ilk sayfaları yazdırdım.
kağıtları ters çevirip yazıcıya koydum
arka yüzleri yazdırmak için ne yapacağım....
sorun burada hocam


yoksa verdiğiniz bilgi gerçekten çok işe yarıyor.
emeğiniz ödenmez.
Allah sizi darda bırakmasın...
 
Yazdır butonunun kodlarını aşağıdaki ile değiştirin


Kod:
Private Sub btnYazdir_Click()
    If cbSinif.ListIndex = -1 Then
        MsgBox "Lüfen önce sınıf seçiniz."
        cbSinif.SetFocus
        Exit Sub
    ElseIf cbOdev.ListIndex = -1 Then
        MsgBox "Lüfen önce yazdırılacak ödevi seçiniz."
        cbOdev.SetFocus
        Exit Sub
    End If
    Dim Say As Long
    Dim Bak As Long
    Dim syfListe As Worksheet
    Dim syfOdev As Worksheet
    Set syfListe = ThisWorkbook.Worksheets("rehberlik_servisi")
    Set syfOdev = ThisWorkbook.Worksheets(cbOdev.Value)
    Say = syfListe.Range("B" & Cells.Rows.Count).End(3).Row
    For Bak = 7 To Say
        If Left(syfListe.Range("B" & Bak).Value, 1) = cbSinif.Value Then
            syfOdev.Range("D4").Value = syfListe.Range("B" & Bak).Value
            syfOdev.Range("G5").Value = syfListe.Range("D" & Bak).Value
            syfOdev.Range("G6").Value = syfListe.Range("F" & Bak).Value
            syfOdev.PrintOut From:=1, To:=1
        End If
        VBA.Interaction.DoEvents
        Label3.Caption = "Kalan : " & Say - Bak
    Next
    If MsgBox("Birinci sayfa yazma işlemi bitti. İkinci sayfanın yazdırılması için hazır mısınız?", vbOKCancel) = vbOK Then
        syfOdev.PrintOut From:=2, To:=1, Copies:=Say - 7
    End If
End Sub
 
dalgalikur hocam verdiğiniz kodu değiştirdim uyarı mesajı geliyor kağıtları değiştirip tamam diyorum ama arka yüze hem ön yüzü hem arka yüzü basıyor ve toplam kağıt sayısına bakmadan 1 adet ön yüz 1 adet arka yüz yazdırıyor.
 
özür dilerim
Kod:
syfOdev.PrintOut From:=2, To:=1, Copies:=Say - 7
satırını aşağıdaki gibi yapın
Kod:
syfOdev.PrintOut From:=2, To:=2, Copies:=Say - 7
 
dalgalikur hocam seni çok uğraştırdım hakkını helal et.

Son bi sıkıntı var hocam
dediğin değişikliği yaptım sayfa doğru ama sayfadan kaç adet yazdıracağını belirleme şansımız yokmu

5. sınıf öğrencilerinde denedim.

3. öğrenci için deneme yaptım.
Yazdıra tıklayınca 3 öğrenci içinde ön yüzü yazdırdı
Kağıtları çevirip arka yüzü yazdırmak için düğmeyi tıkladığımda arka sayfayı yazdırdı.
İstediğimde zaten bu
Ama 5. sınıf öğrenci sayısı kadar bu örneği çoğaltmalı ki bu buton tam anlamıyla işe yarasın.
Yani örnek için söyleyecek olursam ikinci kez tıkladığımda 3 öğrenci olduğu için arka sayfadan 3 tane yazdırmalıydı ama bir sayfa yazdırdı.

Bunu da halledersen bu sefer tamam olacak.
Seni çok uğraştırdım hocam.
Kusuruma bakma.
Hakkını helal et.
 
Kodları istediğiniz gibi değiştirdim

Kod:
Private Sub btnYazdir_Click()
    If cbSinif.ListIndex = -1 Then
        MsgBox "Lüfen önce sınıf seçiniz."
        cbSinif.SetFocus
        Exit Sub
    ElseIf cbOdev.ListIndex = -1 Then
        MsgBox "Lüfen önce yazdırılacak ödevi seçiniz."
        cbOdev.SetFocus
        Exit Sub
    End If
    Dim Say As Long
    Dim Bak As Long
    Dim syfListe As Worksheet
    Dim syfOdev As Worksheet
    Set syfListe = ThisWorkbook.Worksheets("rehberlik_servisi")
    Set syfOdev = ThisWorkbook.Worksheets(cbOdev.Value)
    Say = syfListe.Range("B" & Cells.Rows.Count).End(3).Row
    For Bak = 7 To Say
        If Left(syfListe.Range("B" & Bak).Value, 1) = cbSinif.Value Then
            syfOdev.Range("D4").Value = syfListe.Range("B" & Bak).Value
            syfOdev.Range("G5").Value = syfListe.Range("D" & Bak).Value
            syfOdev.Range("G6").Value = syfListe.Range("F" & Bak).Value
            syfOdev.PrintOut From:=1, To:=1
        End If
        VBA.Interaction.DoEvents
        Label3.Caption = "Kalan : " & Say - Bak
    Next
    Dim Yazdir_Adet As String
    Yazdir_Adet = InputBox("Birinci sayfa yazma işlemi bitti. İkinci sayfanın yazdırılması için hazırsanız kaç adet yazdırılacağını belirttikten sonra 'Tamam'a tıklatınız." & vbLf & vbLf & _
                            "Yazdırmayı iptal etmek için 'İptal'e tıklatınız.")
    If IsNumeric(Yazdir_Adet) Then
        syfOdev.PrintOut From:=2, To:=2, Copies:=Yazdir_Adet
    End If
End Sub
 
dalgalikur hocam

kodu değiştirdim.
benden yazdırmam için sayı girmemi istiyor
örnekteki gibi 3 yazdım ama yine 1 tane yazdırdı.
 
sayfanın kaç kopya yazdırılacağını
Kod:
syfOdev.PrintOut From:=2, To:=2, Copies:=[COLOR="Red"]Yazdir_Adet[/COLOR]
burada belirtiyoruz
Siz bide rakam girerek deneyin

Kod:
syfOdev.PrintOut From:=2, To:=2, Copies:=[COLOR="Red"]3[/COLOR]
bakalım ne olacak
 
dalgalikur hocam dediğinizi yaptım ve kopya miktarını elle girdim ama yine bir sayfa çıktı veriyor.

hocam arka yüzleri yazdırmak için başka bir buton mu oluştursak?
 
Kod:
syfOdev.PrintOut From:=2, to:=2, Copies:=Yazdir_Adet
satırını silip aşağıdaki kodları yazın
Kod:
        For Bak = 1 To Yazdir_Adet
            syfOdev.PrintOut From:=2, To:=2
        Next
 
Ellerin dert görmesin hocam...
Tüm işlerin rast gitsin...
Çok teşekkür ederim.
çok emeğin geçti hakkını helal et.
 
Geri
Üst