Genel Bakış
PrintPreview (Worksheet.PrintPreview), belirtilen çalışma sayfasını yazıcıdan çıkmadan önce Baskı Önizleme ekranında açan bir yöntemdir. Sayfanın kağıt üzerinde nasıl görüneceğini, sayfa sonlarını ve kenar boşluklarını kontrol etmek için kullanılır. Aynı yöntem Workbook, Window, Range ve Chart nesnelerinde de bulunur.
Önizleme, sayfanın o anki sayfa yapısı ayarlarına göre hazırlanır. Yani yönlendirme, kağıt boyutu, yazdırma alanı, üst ve alt bilgiler, sayfa sonları ve ölçekleme PageSetup nesnesindeki değerlere göre görünür. Önizlemeyi kodla açmak, kullanıcının Dosya > Yazdır (File > Print) ekranını açmasına ya da Ctrl+F2 tuşlarına basmasına benzer bir sonuç verir.
Önizleme ekranında yazdırma düğmesi de bulunur; kullanıcı isterse oradan yazdırabilir. Makro ise yalnızca önizlemeyi açar, yazdırmayı kendiliğinden başlatmaz.
Makro çalıştırıldığında Excel, sayfayı Baskı Önizleme görünümünde açar ve önizleme kapatılana kadar bekler. Bu örnek ekran açtığı için burada otomatik çalıştırılmamıştır; kendi bilgisayarınızda deneyebilirsiniz.
Makro her satırın tutar hücresine bakar. 2. satır için sonuç Hazır, 3. satır için Eksik, 6. satır için Eksik olarak yazılır. Tutarı boş olan satırlar Eksik olarak işaretlenir; böylece raporu önizlemeye göndermeden önce eksikleri tamamlayabilirsiniz.
Makro çalıştığında Aylık Özet sayfası önizlemede açılır ve kullanıcı sayfa yapısı ayarlarını değiştiremez. Önizleme açılamazsa hata etiketine geçilir ve bir uyarı iletisi görüntülenir. Bu örnekte ekran ve ileti penceresi bulunduğundan makro otomatik çalıştırılmamıştır.
Söz dizimi
Yöntem, bir çalışma sayfası nesnesi üzerinden şu biçimde çağrılır:
VBA
5 satır
ifade.PrintPreview(EnableChanges)
' Örnek
Worksheets("Rapor").PrintPreview
Worksheets("Rapor").PrintPreview EnableChanges:=False
- ifade: Bir Worksheet (ya da Workbook, Range, Chart, Window) nesnesini veren ifade; zorunludur.
- EnableChanges: İsteğe bağlı Variant değerdir. True ise kullanıcı önizleme sırasında sayfa yapısı seçeneklerini değiştirebilir. False ise değişikliğe izin verilmez. Varsayılanı True'dur.
Nasıl çalışır
PrintPreview çağrıldığında Excel, Baskı Önizleme görünümünü açar. Kullanıcı önizlemeyi kapatıncaya kadar makro bu satırda bekler; kapatılınca kodun sonraki satırı çalışır. Bu nedenle önizlemeden sonra çalışmasını istediğiniz kodu yöntemin altına yazabilirsiniz.Önizleme, sayfanın o anki sayfa yapısı ayarlarına göre hazırlanır. Yani yönlendirme, kağıt boyutu, yazdırma alanı, üst ve alt bilgiler, sayfa sonları ve ölçekleme PageSetup nesnesindeki değerlere göre görünür. Önizlemeyi kodla açmak, kullanıcının Dosya > Yazdır (File > Print) ekranını açmasına ya da Ctrl+F2 tuşlarına basmasına benzer bir sonuç verir.
Önizleme ekranında yazdırma düğmesi de bulunur; kullanıcı isterse oradan yazdırabilir. Makro ise yalnızca önizlemeyi açar, yazdırmayı kendiliğinden başlatmaz.
EnableChanges parametresi ve yazıcı gereksinimi
- True (varsayılan): Kullanıcı önizleme ekranından kenar boşluklarını ve sayfa yapısı ayarlarını değiştirebilir. Bu değişiklikler çalışma sayfasının sayfa yapısına işlenir.
- False: Önizleme salt görüntüleme amaçlıdır; kullanıcı ayar değiştiremez. Hazırladığınız düzenin bozulmasını istemediğiniz raporlarda uygundur.
1. Sayfayı önizlemede açma
Aşağıdaki makroyu standart bir modüle (Ekle > Modül) yapıştırın. Makro, Satış Raporu sayfasını Baskı Önizleme ekranında açar. Kullanıcı önizlemeyi kapatana kadar kod bekler.
VBA
6 satır
Option Explicit
Sub RaporuOnizle()
' Satış Raporu sayfasını varsayılan ayarlarla önizlemede açar
Worksheets("Satış Raporu").PrintPreview
End Sub
PrintPreview
Formülünü incelemek için bir hücre seçin.| A | B | C | |
|---|---|---|---|
| 1 | Ürün | Şehir | Tutar |
| 2 | Kalem Seti | Ankara | 1.250,00 |
| 3 | Defter | İzmir | 980,50 |
| 4 | Dosya | Bursa | 640,00 |
| 5 | Ajanda | Adana | 1.475,75 |
Satış RaporuExcelDepo v1.0.0
2. Önizlemeden önce veri kontrolü
Raporu önizlemeye göndermeden önce tutar sütununda boş hücre olup olmadığını denetlemek iyi bir alışkanlıktır. Aşağıdaki makroyu standart modüle yapıştırın; makro her satırı denetler ve D sütununa sonuç yazar. Önizleme satırını (Worksheets("Kontrol") nesnesine bağlı PrintPreview çağrısı) bu denetimin ardına ekleyebilirsiniz.
VBA
17 satır
Option Explicit
Sub OnizlemeOncesiKontrol()
Dim ws As Worksheet
Dim i As Long
Set ws = ThisWorkbook.Worksheets("Kontrol")
' 2. satırdan 7. satıra kadar tutar sütununu denetle
For i = 2 To 7
If IsEmpty(ws.Cells(i, 3).Value) Then
ws.Cells(i, 4).Value = "Eksik"
Else
ws.Cells(i, 4).Value = "Hazır"
End If
Next i
End Sub
PrintPreview
Formülünü incelemek için bir hücre seçin.| A | B | C | D | |
|---|---|---|---|---|
| 1 | Ürün | Şehir | Tutar | Sonuç |
| 2 | Kalem Seti | Ankara | 1.250,00 | Hazır |
| 3 | Defter | İzmir | Eksik | |
| 4 | Dosya | Bursa | 640,00 | Hazır |
| 5 | Ajanda | Adana | 1.475,75 | Hazır |
| 6 | Klasör | Konya | Eksik | |
| 7 | Zımba | Antalya | 310,00 | Hazır |
KontrolExcelDepo v1.0.0
3. Değişikliğe kapalı önizleme ve hata yönetimi
Aşağıdaki makro, önizlemeyi EnableChanges değeri False olarak açar ve yazıcı bulunamadığı durumda oluşabilecek hatayı yakalar. Kodu standart bir modüle yapıştırın.
VBA
16 satır
Option Explicit
Sub KilitliOnizleme()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Aylık Özet")
On Error GoTo Hata
' Kullanıcı sayfa yapısını değiştiremesin
ws.PrintPreview EnableChanges:=False
Exit Sub
Hata:
' Yazıcı tanımlı değilse ya da önizleme açılamadıysa buraya düşer
MsgBox "Önizleme açılamadı. Yazıcı ayarlarınızı denetleyin." & vbCrLf & Err.Description, vbExclamation
End Sub
PrintPreview
Formülünü incelemek için bir hücre seçin.| A | B | C | |
|---|---|---|---|
| 1 | Ay | Şube | Ciro |
| 2 | Ocak | İstanbul | 45.200,00 |
| 3 | Şubat | Ankara | 38.750,50 |
| 4 | Mart | İzmir | 41.300,00 |
Aylık ÖzetExcelDepo v1.0.0
Kullanırken dikkat edin
- Makro önizleme kapanana kadar bekler: PrintPreview çağrısından sonraki satırlar, kullanıcı önizlemeyi kapatana kadar çalışmaz. Önizlemeden sonra yapılacak işlemleri bu satırın altına yazın; zamanlayıcı ya da bekleme döngüsü kullanmanıza gerek yoktur.
- Yazıcı tanımlı olmalıdır: Önizleme sayfa ölçülerini yazıcı sürücüsünden aldığı için bilgisayarda varsayılan yazıcı yoksa 1004 numaralı çalışma zamanı hatası alabilirsiniz. Dağıttığınız dosyalarda On Error ile hatayı yakalamanız önerilir.
- EnableChanges değerini bilinçli seçin: Varsayılan değer True olduğundan kullanıcı önizleme sırasında sayfa yapısını değiştirebilir. Hazırladığınız düzenin korunmasını istiyorsanız EnableChanges:=False yazın.
- Önizleme yazdırmaz: Yöntem yalnızca önizlemeyi açar. Kağıda yazdırmak için PrintOut yöntemini kullanmanız gerekir. Kullanıcı isterse önizleme ekranındaki yazdırma düğmesiyle yazdırabilir.
- Doğru sayfa ve ayarlar: Önizleme, çağrıldığı nesneye göre açılır. Worksheet üzerinde çağırırsanız yalnızca o sayfa, Workbook üzerinde çağırırsanız çalışma kitabındaki sayfalar önizlenir. Önizlemeden önce PageSetup ayarlarını (yön, ölçek, yazdırma alanı) düzenlemek, beklenmedik sayfa sonlarını önler.
- İlgili konular:
- PrintOut: Sayfayı ya da çalışma kitabını yazıcıya gönderen yöntem.
- PageSetup: Yön, kağıt boyutu, kenar boşlukları, üst ve alt bilgi gibi sayfa yapısı ayarlarını tutan nesne.
- PrintArea: PageSetup nesnesinin yazdırma alanını belirleyen özelliği.
- HPageBreaks ve VPageBreaks: Yatay ve dikey sayfa sonlarını yöneten koleksiyonlar.
- Dosya > Yazdır (File > Print): Elle önizleme ve yazdırma ekranı.
- On Error: Hata yakalama deyimi.