Özellik ikonu

PrintOut

İndirme izni yok

Genel Bakış

PrintOut (Worksheet.PrintOut method), bir çalışma sayfasının yazdırılmasını VBA kodundan başlatan yöntemdir. Kopya sayısı, sayfa aralığı, önizleme, yazıcı ve dosyaya yazdırma gibi seçenekleri kod içinden belirlemenizi sağlar. Aynı yöntem Workbook, Range, Chart ve Window nesnelerinde de bulunur.

Söz dizimi​

Yöntemin genel biçimi aşağıdadır. Tüm parametreler isteğe bağlıdır; hiçbiri verilmezse sayfa etkin yazıcıda bir kopya olarak tamamen yazdırılır.
VBA
ifade.PrintOut(From, To, Copies, Preview, ActivePrinter, PrintToFile, Collate, PrToFileName, IgnorePrintAreas)
Burada ifade, bir Worksheet nesnesini gösteren ifadedir (ör. ActiveSheet ya da Worksheets("Rapor")). Parametreler:
  • From: Yazdırmaya başlanacak sayfa numarası; isteğe bağlı. Verilmezse ilk sayfadan başlanır.
  • To: Yazdırılacak son sayfa numarası; isteğe bağlı. Verilmezse son sayfaya kadar yazdırılır.
  • Copies: Yazdırılacak kopya sayısı; isteğe bağlı. Varsayılan 1'dir.
  • Preview: True ise yazdırmadan önce baskı önizleme açılır; isteğe bağlı. Varsayılan False'tur, yani doğrudan yazdırılır.
  • ActivePrinter: Kullanılacak etkin yazıcının adı; isteğe bağlı. Verilmezse Excel'in etkin yazıcısı kullanılır.
  • PrintToFile: True ise yazıcıya değil dosyaya yazdırılır; isteğe bağlı. Varsayılan False'tur. PrToFileName verilmezse Excel dosya adını sorar.
  • Collate: True ise birden çok kopya sıralı (harmanlanmış) basılır; isteğe bağlı.
  • PrToFileName: PrintToFile True iken oluşturulacak dosyanın adı; isteğe bağlı.
  • IgnorePrintAreas: True ise tanımlı yazdırma alanları yok sayılır ve sayfanın tamamı yazdırılır; isteğe bağlı. Varsayılan False'tur.

Dönüş değeri ve kullanım biçimleri​

PrintOut bir değer döndürmez; bu nedenle parantezsiz ve adlandırılmış bağımsız değişkenlerle çağırmak en okunaklı yoldur. Parametrelerin yerini ezberlemek yerine adlarını yazmanız hatayı azaltır:
VBA
ActiveSheet.PrintOut Copies:=2, Collate:=True
Yöntem şu nesnelerde de vardır: Workbook.PrintOut (tüm kitap), Range.PrintOut (yalnız seçili aralık), Chart.PrintOut (grafik sayfası) ve Sheets.PrintOut (birden çok sayfa). Tek tek sayfa seçmek için Worksheets(Array("Ocak", "Şubat")).PrintOut biçimi kullanılabilir.

Hangi alanın yazdırılacağı​

Excel, sayfada Sayfa Düzeni > Sayfa Yapısı > Yazdırma Alanı (Page Layout > Page Setup > Print Area) ile tanımlı bir alan varsa yalnız o alanı yazdırır. Alan tanımlı değilse kullanılan bölgenin tamamı basılır. Sayfa yönü, kenar boşlukları, ölçekleme ve başlık satırları gibi ayarlar PageSetup nesnesinden gelir; PrintOut bu ayarları değiştirmez, olduğu gibi kullanır. From ve To değerleri satır değil, sayfa numarasıdır.
Preview değeri True olduğunda önizleme penceresi kapanana kadar makro bekler; kullanıcı yazdır düğmesine basmazsa çıktı alınmaz.

1. Birden çok kopya yazdırma​

Bir sayfadaki ürün satış listesinin iki kopyasını sıralı olarak yazdırmak istiyorsunuz. Kodu Ekle > Modül (Insert > Module) ile açtığınız standart modüle yapıştırın. Yazdırma işlemi çalıştırılmadığı için sonuç yalnız anlatılır.
VBA 6 satır
Option Explicit

Sub SatisListesiniYazdir()
    ' Sayfayı 2 kopya olarak, kopyaları sıralı basar
    Worksheets("Satış Listesi").PrintOut Copies:=2, Collate:=True
End Sub
PrintOut
Formülünü incelemek için bir hücre seçin.
ABCD
1ÜrünŞehirAdetTutar
2KlavyeAnkara123.600,00
3Monitörİzmir521.500,00
4YazıcıBursa39.750,00
Satış ListesiExcelDepo v1.0.0
Makro çalıştırıldığında Satış Listesi sayfası etkin yazıcıya iki kopya olarak gönderilir. Collate parametresi True olduğu için kopyalar sayfa sırasıyla, yani birinci kopyanın tamamı ardından ikinci kopya biçiminde basılır. Bu örnek yazıcıya erişim gerektirdiği için burada çalıştırılmaz.

2. Sayfa aralığı ve önizleme​

Uzun bir stok listesinin yalnız ilk iki sayfasını, önce önizleme göstererek yazdırmak istiyorsunuz. Kodu standart bir modüle yapıştırın. Önizleme penceresi kullanıcı etkileşimi beklediği için örnek çalıştırılmaz.
VBA 8 satır
Option Explicit

Sub StokIlkIkiSayfa()
    ' 1. ve 2. sayfalar, önce baskı önizleme gösterilerek yazdırılır
    ' IgnorePrintAreas True: tanımlı yazdırma alanı yok sayılır
    Worksheets("Stok Listesi").PrintOut From:=1, To:=2, Copies:=1, _
        Preview:=True, IgnorePrintAreas:=True
End Sub
PrintOut
Formülünü incelemek için bir hücre seçin.
ABCD
1Ürün KoduÜrün AdıDepoStok
2A-101Kalemİstanbul450
3A-102DefterKonya220
4A-103DosyaAdana315
Stok ListesiExcelDepo v1.0.0
Makro çalışınca Excel önce baskı önizleme penceresini açar. Kullanıcı yazdırmayı onaylarsa yalnız 1. ve 2. sayfalar basılır. IgnorePrintAreas True verildiği için sayfada tanımlı bir yazdırma alanı olsa bile kullanılan bölgenin tamamı esas alınır.

3. Yazdırmadan önce kontrol​

Yazdırmaya geçmeden önce hangi satırların basılacağını işaretleyen ve kullanılan alanın adresini yazan bir hazırlık makrosu kuruyorsunuz. Adedi 0 olan satırlar atlanacaktır. Kodu standart bir modüle yapıştırın; bu makro yazıcıya erişmediği için çalıştırılabilir. Gerçek yazdırma için aynı mantığın sonuna PrintOut çağrısı eklenebilir.
VBA 23 satır
Option Explicit

Sub YazdirmaOnKontrol()
    Dim ws As Worksheet
    Dim i As Long
    Dim son As Long

    Set ws = ActiveSheet
    ' A sütunundaki son dolu satırı bulur
    son = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row

    ' Adedi sıfırdan büyük satırları işaretler
    For i = 2 To son
        If ws.Cells(i, 3).Value > 0 Then
            ws.Cells(i, 4).Value = "Yazdırılacak"
        Else
            ws.Cells(i, 4).Value = "Atlanacak"
        End If
    Next i

    ' Kullanılan alanın adresini yazar
    ws.Range("E2").Value = ws.UsedRange.Address(False, False)
End Sub
PrintOut
Formülünü incelemek için bir hücre seçin.
ABCDE
1ÜrünŞehirAdetDurumAlan
2MasaAnkara8YazdırılacakA1:E6
3Sandalyeİzmir24Yazdırılacak
4DolapBursa0Atlanacak
5LambaAntalya15Yazdırılacak
6RafKonya6Yazdırılacak
Yazdırma KontrolExcelDepo v1.0.0
Makro çalıştıktan sonra ilk satırın durumu D2 hücresinde Yazdırılacak olarak görünür. Adedi 0 olan satırın durumu D4 hücresinde Atlanacak biçimindedir. Kullanılan alanın adresi E2 hücresinde A1:E6 olarak yazılır; bu adres, yazdırma alanı tanımlı değilse PrintOut'un basacağı bölgeyi gösterir.

Kullanırken dikkat edin​

  • Yazıcı bulunmayan bilgisayarlarda hata: Etkin yazıcı tanımlı değilse ya da yazıcıya ulaşılamıyorsa PrintOut çalışma zamanı hatası verir. Üretim kodunda On Error ile hatayı yakalayıp kullanıcıyı bilgilendirmeniz önerilir.
  • Önce önizleme ile deneyin: Kodu geliştirirken kağıt israf etmemek için Preview parametresini True verin ya da PrintPreview yöntemini kullanın. Çıktıyı beğendikten sonra Preview değerini kaldırın.
  • Yazdırma alanı ve sayfa ayarı: PrintOut sayfa yönü, ölçekleme ve başlık satırlarını PageSetup nesnesinden alır. Çıktı beklediğiniz gibi değilse önce PageSetup ayarlarını kontrol edin. Tüm sayfayı basmak için IgnorePrintAreas parametresini True yapın.
  • From ve To sayfa numarasıdır: From ve To satır numarası değil, yazdırılacak sayfa numarasıdır. Sayfa sayısı sayfa kesmelerine ve ölçeklemeye göre değiştiği için aralıkları sabit yazarken dikkatli olun.
  • Adlandırılmış bağımsız değişken kullanın: Dokuz parametrenin sırasını hatırlamak zordur. Copies:=2 gibi adlandırılmış bağımsız değişkenler hem hatayı azaltır hem de kodu okunaklı yapar.
  • Dosyaya yazdırma: PrintToFile True verilip PrToFileName boş bırakılırsa Excel dosya adını sormak için pencere açar ve makro etkileşim bekler. Otomatik çalışacak kodlarda dosya adını da verin; ancak PDF gerekiyorsa ExportAsFixedFormat daha uygun bir yoldur.
  • İlgili konular:
    • PrintPreview: Yazdırmadan önce baskı önizlemeyi açan yöntem.
    • PageSetup: Sayfa yönü, kenar boşlukları, ölçek ve başlık satırlarını belirleyen nesne.
    • PageSetup.PrintArea: Yazdırma alanını belirleyen özellik.
    • ExportAsFixedFormat: Sayfayı PDF ya da XPS olarak dışa aktaran yöntem.
    • Application.ActivePrinter: Etkin yazıcıyı okuyan ve değiştiren özellik.
    • HPageBreaks: Yatay sayfa kesmelerini yöneten koleksiyon.
    • Dosya > Yazdır (File > Print): Aynı işlemi elle yapan arayüz komutu.
Örneklerdeki makroların tamamı indirilebilir Excel dosyasındadır (.xlsm). Dosyayı açtıktan sonra makroları etkinleştirin, ardından Alt + F11 ile Visual Basic Düzenleyicisi'nde kodları inceleyebilir ve Alt + F8 ile çalıştırabilirsiniz.
Yazar
ExcelDepo
İndirme sayısı
0
Gösterim
10
İlk yayın
Güncel

Puanlar

0.00 Oylama 0 İnceleme
Geri
Üst