• DİKKAT

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

Çoklu yazdırma alanı belirleme

ismailmustafa

Altın Üye
Katılım
10 Nisan 2006
Mesajlar
108
Excel Vers. ve Dili
2010
Merhaba arkadaşlar.
Çok fazla çalışma sayfasıyla çalışıyorum. Birden fazla çalışma sayfasını aynı anda yazdırma alanı belirleme şansım var mı?
Yardımlarınız için şimdiden teşekkür ederim.
 
Detay vermemişsiniz. Mesala bu kodlar tüm sayfalarda A1-C5 arasını yazdırma alanı olarak belirler.

Belirli sayfalara ve farklı yazdırma alanları ekleyecekseniz.
Sheets(i).PageSetup.PrintArea = "$A$1:$C$5"
Bu satırı her sayfa için ayrı ayrı düzenleyip eklemelisiniz. i yerine sayfa numarasını yada çift tırnak içerisinde sayfa adını yazabilirsiniz.

Kod:
Sub Yazdr()

Dim i As Integer

For i = 1 To Worksheets.Count
   
    Sheets(i).PageSetup.PrintArea = "$A$1:$C$5"

Next i

End Sub
 
Sheets("sayfaadin"). Select
ActiveWindow. SelectedSheets. PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=false

Bunu çoğalt sayfa adını değiştir telefondan yazdım,
Yukarıdaki işlemi module ekle modülü çalıştır düğmeye ata.

istersen sayfalarıda foreech döngüsü ile yazdirabilirsin. Akşam ancak bakarım.
 
Teşekkür ederim. Acelesi yok ben de yarın sabah bakacağım zaten.
 
Dosyanın atarsan daha iyi olur, ikincisi kitap içindeki sayfaları yazdırmak istiyorsun tek düğme ile
 
Sayfaların satır ve sütun sayıları çok farklı. Mesela 1 sayfadan 150 tane var. Aynı şekilde 5 tane çoklu sayfam var. Yani 5X150 hepsinin yazdırma alanı farklı olması gerekiyor bunların yazdırma alanlarını 150şerli olarak seçerek belirleme şansım var mı?
 
Tek kitapçık içinde 5X150 sayfa var lakin her sayfada aldırmak istemediğim alanlar da var.
 
Yukarıda eğer her sayfada farklı alanlar belirlenecekse;
Sheets(i).PageSetup.PrintArea = "$A$1:$C$5" kodunu değişiklik yapacağınız sayfa kadar uygun şekilde ekleyerek makro yapıp çalıştırabilirsiniz demiştim.

Ama 5x150 gibi bir durumda kod gereksiz yere aşırı şismiş olur ve yazarken çok daha fazla zaman kaybedersiniz.
Bunun için makroyu biraz geliştirdim. Dosyanıza en sona Tmp isimli bir sayfa ekleyip, resimde görüldüğü gibi her sayfa için, sayfa sırasını, yazdırma alanlarının başlangıç ve bitiş referanslarını yazıp, makroyu çalıştırırsanız, makro ile yazdırma alanları belirlenecek.

Daha farklı bir şey istiyorsanız, nasıl olur bilmiyorum. Yazdırma alanları her sayfada sabit olmadığı için bir şekilde excele o alanları bildirmelisiniz.

233738

Sayfalarda atlamak istedikleriniz olursa; Örn. 4. sıradaki sayfa onu listeye dahil etmeyip bir sonraki sayfadan devam edersiniz.
Örnek dosyayı da ekledim. Kendi dosyanıza uyarlarsınız.


Kod:
Sub Yazdr()

Dim i As Integer
Dim x As Integer
Dim y As String


For i = 1 To Sheets("Tmp").Cells(Rows.Count, 1).End(xlUp).Row

    x = Sheets("Tmp").Cells(i, 1)
    y = Sheets("Tmp").Cells(i, 2) & ":" & Sheets("Tmp").Cells(i, 3)
 
            Sheets(x).PageSetup.PrintArea = y

Next i

End Sub
 

Ekli dosyalar

Son düzenleme:
Hayırlı sabahlar hocam. Elinize ve emeğinize sağlık. Çok güzel olmuş. Ama her sayfanın adını ve yazdırma alanlarını teker teker yazmaktan bahsediyorsunuz. Öyle ki bazı excel kitaplarımda 9X150 sayfadan oluşuyor o da 1350 sayfa yapıyor. Sayfa adlarını yazana kadar yazdıracağım sayfaları seçerek seçili sayfalarda yazdıracağım alanı da seçtikten sonra sayfaların teker teker Alt, S, D,B kısayolunu kullanarak yazdırma alanını belirlemek benim için daha kolay olacak. Ben daha basit bir yolu var mı diye sormuştum.
 
İyi günler. Yaptığınız işlemlerinizde standart olmadığı için; malesef her türlü değişkeni excele bildirmek zorundasınız..
Dediğiniz gibi bu tür durumlarda elle işlem yapmak daha mantıklı.

Haa atıyorum 1350 verili 30-40 tane dosyanız vardır. Ve o dosyalarda hep aynı yerlere işlem yapmak gerekiyordur.
Bir kere referansları girersiniz. Aynı makroyu 40 dosyanızda kullanırsınız. Böyle bir durumda uğraşmaya değebilir.
Ama sizin durumunuzda dediğiniz gibi gerek yok.
 
İyi günler. Dosyalarımda aynı sayfaları kullanıyorum. Uğraştığıma değer. Şayet kısayolla yapma imkanım olursa diye sizleri meşgul ettim. Hakkınızı helal edin. Kolay gelsin. Hayırlı akşamlar.
 
Merhaba,

Aklıma şöyle bir çözüm yolu geldi. Ama ne kadar pratik olur bilemedim.

Bir Userform üzerinde sayfa isimleri ve yazdirma alanları listelenebilir.

Siz bu liste üzerine çift tıklayıp yeni yazdırma alanını belirleyerek sonrasında yazdirabilirsiniz.
 
Helal olsun. İyi akşamlar :)
İyi günler. Dosyalarımda aynı sayfaları kullanıyorum. Uğraştığıma değer. Şayet kısayolla yapma imkanım olursa diye sizleri meşgul ettim. Hakkınızı helal edin. Kolay gelsin. Hayırlı akşamlar.
 
Geri
Üst