Özellik ikonu

ExportAsFixedFormat

İndirme izni yok

Genel Bakış

ExportAsFixedFormat (Workbook.ExportAsFixedFormat method), bir çalışma kitabını PDF ya da XPS gibi sabit biçimli bir dosyaya aktaran yöntemdir. Dosya içeriği, ekrandaki görünümden çok yazdırma düzenine göre oluşur ve her cihazda aynı görünür. Raporları otomatik olarak PDF'e çevirmek, aylık çıktıları arşivlemek ve e-posta ile göndermek için kullanılır.

Söz dizimi​

Yöntem Workbook nesnesinin yöntemidir. Aynı ada sahip yöntem Worksheet, Chart ve Range nesnelerinde de bulunur; böylece yalnız bir sayfayı ya da bir aralığı dışa aktarabilirsiniz. Yöntem bir değer döndürmez.

VBA
ifade.ExportAsFixedFormat(Type, Filename, Quality, IncludeDocProperties, IgnorePrintAreas, From, To, OpenAfterPublish, FixedFormatExtClassPtr)

Parametreler:
  • Type: Dosya biçimi; zorunludur. xlTypePDF (PDF) ya da xlTypeXPS (XPS) değerini alır.
  • Filename: Dosya adı ve yolu; isteğe bağlıdır. Verilmezse Excel dosyayı geçerli klasöre, çalışma kitabının adıyla kaydeder.
  • Quality: Dosya kalitesi; isteğe bağlıdır. xlQualityStandard (standart, yazdırma kalitesi) ya da xlQualityMinimum (en düşük, ekran ve çevrimiçi kullanım için küçük dosya).
  • IncludeDocProperties: True ise belge özellikleri (yazar, başlık gibi) dosyaya eklenir; isteğe bağlıdır.
  • IgnorePrintAreas: True ise tanımlı yazdırma alanları yok sayılır ve tüm içerik aktarılır; False ise yazdırma alanlarına uyulur. İsteğe bağlıdır.
  • From: Aktarmaya başlanacak sayfa numarası; isteğe bağlıdır. Verilmezse baştan başlanır.
  • To: Aktarmanın biteceği sayfa numarası; isteğe bağlıdır. Verilmezse son sayfaya kadar gider.
  • OpenAfterPublish: True ise dosya oluşturulduktan sonra görüntüleyicide açılır; isteğe bağlıdır.
  • FixedFormatExtClassPtr: Üçüncü taraf eklentiler için ayrılmış gelişmiş bir göstericidir; gündelik kullanımda gerekmez.

Parametreleri adlandırarak yazmak (Type:=xlTypePDF gibi) kodu okunaklı kılar ve atlanan isteğe bağlı parametrelerde virgül saymaktan kurtarır.

Sabitler ve dışa aktarılan içerik​

Sık kullanılan sabitler şunlardır:
  • xlTypePDF: PDF biçimi.
  • xlTypeXPS: XPS biçimi.
  • xlQualityStandard: Standart kalite; varsayılan seçimdir.
  • xlQualityMinimum: En düşük kalite, daha küçük dosya.

Dışa aktarılan içerik, yazdırma sırasında oluşacak sayfa düzenine göre belirlenir. Sayfa Düzeni > Sayfa Yapısı (Page Layout > Page Setup) ayarları (kağıt boyutu, yön, kenar boşlukları, ölçekleme, üst ve alt bilgiler, sayfa sonları) çıktıya aynen yansır. Bu yüzden kodu çalıştırmadan önce PageSetup ayarlarını yapmak, çıktının düzenini belirleyen en önemli adımdır.

Tüm çalışma kitabı dışa aktarılırken görünür sayfaların tümü sırayla tek dosyaya yazılır. Aynı işlemi menüden yapmak için Dosya > Dışa Aktar > PDF/XPS Belgesi Oluştur (File > Export > Create PDF/XPS Document) ya da Dosya > Farklı Kaydet (File > Save As) penceresinde dosya türü olarak PDF seçilebilir.

Kullanım biçimleri​

Yalnız etkin sayfayı aktarmak için ActiveSheet.ExportAsFixedFormat, belirli bir aralığı aktarmak için Range(...).ExportAsFixedFormat biçimini kullanın. Kitabın yalnız belirli sayfalarını aktarmak için önce bu sayfaları seçip ActiveWindow.SelectedSheets.ExportAsFixedFormat yazabilir ya da From ve To ile sayfa numarası sınırı verebilirsiniz.

Dosya adını koddan üretmek (şube, ay ya da tarih eklemek) toplu raporlamada çok işe yarar. Yöntem, hedef dosya başka bir programda açıksa ya da klasöre yazma izniniz yoksa hata verir; bu nedenle On Error ile hata yakalamak iyi bir alışkanlıktır.

1. Sabitlerin sayısal değerleri​

Bu örnekte dışa aktarma yapılmaz; yöntemde kullanılan sabitlerin sayısal karşılıklarını sayfaya yazan bir makro vardır. Kodu standart bir modüle (Ekle > Modül) yapıştırın.
VBA 12 satır
Option Explicit

Sub SabitDegerleriYaz()
    Dim ws As Worksheet
    Set ws = ActiveSheet

    ' Her sabitin sayısal değerini C sütununa yazar
    ws.Range("C2").Value = xlTypePDF
    ws.Range("C3").Value = xlTypeXPS
    ws.Range("C4").Value = xlQualityStandard
    ws.Range("C5").Value = xlQualityMinimum
End Sub
ExportAsFixedFormat
Formülünü incelemek için bir hücre seçin.
ABC
1SabitAnlamSayısal değer
2xlTypePDFPDF biçimi0
3xlTypeXPSXPS biçimi1
4xlQualityStandardStandart kalite0
5xlQualityMinimumEn düşük kalite1
SabitlerExcelDepo v1.0.0
Makro çalışınca xlTypePDF için 0, xlTypeXPS için 1, xlQualityStandard için 0 ve xlQualityMinimum için 1 değeri yazılır. Type parametresine bu sabitlerin adını yazmak, sayıyı yazmaktan çok daha okunaklıdır.

2. Dosya adını hücrelerden üretme​

Şube ve ay bilgisinden PDF dosya adı üreten bir işlev ve bu işlevi her satır için çağıran bir makro yazılır. Üretilen ad, gerçek dışa aktarmada Filename parametresine verilebilir. Kodu standart bir modüle yapıştırın.
VBA 20 satır
Option Explicit

' Şube ve aydan boşluksuz bir PDF dosya adı üretir
Function DosyaAdiOlustur(sube As String, ay As String) As String
    Dim ad As String
    ad = "Satis_" & sube & "_" & ay
    ad = Replace(ad, " ", "_")
    DosyaAdiOlustur = ad & ".pdf"
End Function

Sub DosyaAdlariniYaz()
    Dim ws As Worksheet
    Dim i As Long
    Set ws = ActiveSheet

    ' 2. ile 5. satır arasını sonlu bir döngüyle işler
    For i = 2 To 5
        ws.Cells(i, 3).Value = DosyaAdiOlustur(CStr(ws.Cells(i, 1).Value), CStr(ws.Cells(i, 2).Value))
    Next i
End Sub
ExportAsFixedFormat
Formülünü incelemek için bir hücre seçin.
ABC
1ŞubeAyDosya Adı
2İstanbulOcakSatis_İstanbul_Ocak.pdf
3AnkaraŞubatSatis_Ankara_Şubat.pdf
4İzmirMartSatis_İzmir_Mart.pdf
5BursaNisanSatis_Bursa_Nisan.pdf
Rapor AdlarıExcelDepo v1.0.0
İlk şube için Satis_İstanbul_Ocak.pdf, ikinci şube için Satis_Ankara_Şubat.pdf adı üretilir; dört satırın tamamı aynı yöntemle doldurulur. Bu adlardan birini Filename:= parametresinde yolun sonuna ekleyerek şube başına ayrı PDF dosyası oluşturabilirsiniz.

3. Kitabı PDF olarak dışa aktarma​

Bu örnek, çalışma kitabını kitabın bulunduğu klasöre SatisRaporu.pdf adıyla aktarır. Dosya işlemi içerdiği için örnek burada çalıştırılmaz. Kodu standart bir modüle yapıştırın; kitabın en az bir kez kaydedilmiş olması gerekir.
VBA 24 satır
Option Explicit

Sub CalismaKitabiniPdfYap()
    Dim yol As String

    ' Dosya, bu kitabın bulunduğu klasöre yazılır
    yol = ThisWorkbook.Path & Application.PathSeparator & "SatisRaporu.pdf"

    On Error GoTo Hata

    ThisWorkbook.ExportAsFixedFormat _
        Type:=xlTypePDF, _
        Filename:=yol, _
        Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, _
        OpenAfterPublish:=False

    MsgBox "PDF oluşturuldu.", vbInformation
    Exit Sub

Hata:
    MsgBox "PDF oluşturulamadı: " & Err.Description, vbExclamation
End Sub
ExportAsFixedFormat
Formülünü incelemek için bir hücre seçin.
ABCDE
1ÜrünBölgeAdetBirim FiyatTutar
2KlavyeMarmara12350,00C2*D2
3FareEge25150,00C3*D3
4Monitörİç Anadolu82.400,00C4*D4
5YazıcıAkdeniz53.100,00C5*D5
Satış ListesiExcelDepo v1.0.0
Makro çalıştırıldığında kitabın tüm görünür sayfaları, sayfa yapısı ayarlarına uygun biçimde tek bir PDF dosyasına yazılır. İşlem başarısız olursa hata iletisi gösterilir; kitap kaydedilmemişse ThisWorkbook.Path boş döneceğinden oluşan dosya yolu geçersiz olur ve hata alırsınız. Yalnız tek sayfayı aktarmak için aynı parametrelerle ActiveSheet.ExportAsFixedFormat çağrısını kullanın.

Kullanırken dikkat edin​

  • Kaydedilmemiş kitap: Yeni ve henüz kaydedilmemiş bir kitapta ThisWorkbook.Path boş döner; bu durumda oluşturduğunuz yol geçersiz olur ve yöntem hata verir. Önce kitabı kaydedin ya da tam bir klasör yolu yazın.
  • Açık dosya ve yazma izni: Aynı adlı PDF dosyası bir görüntüleyicide açıksa ya da klasöre yazma izniniz yoksa yöntem hata verir. Aynı ada yazarsanız eski dosyanın üzerine yazılır; yeni dosya adına tarih ya da sıra numarası eklemek eski çıktıları korur.
  • Yazdırma alanı ve sayfa yapısı: Çıktı, yazdırma alanına ve sayfa yapısı ayarlarına göre oluşur. Tüm içeriği alanlardan bağımsız aktarmak istiyorsanız IgnorePrintAreas:=True yazın. Sayfaların kesilmesini önlemek için PageSetup.Zoom ya da FitToPagesWide ayarlarını kontrol edin.
  • Sayfa aralığı: From ve To sayfa numaralarıdır, satır numarası değildir. Yazdırma düzenine göre kaç sayfa oluşacağını önceden bilmiyorsanız bu parametreleri boş bırakmak daha güvenlidir.
  • Sürüm farkı: Yöntem Excel 2007 ve sonrasında bulunur. Excel 2007'de PDF ve XPS desteği için Microsoft'un ayrı eklentisinin kurulu olması gerekir; sonraki sürümlerde bu özellik yerleşiktir.
  • Dosya adında yasak karakterler: Dosya adına hücreden alınan değerleri eklerken \ / : * ? " < > | karakterlerinin bulunmadığından emin olun; aksi halde hata alırsınız. Boşlukları Replace ile alt çizgiye çevirmek yaygın bir önlemdir.
  • İlgili konular:
    • Worksheet.ExportAsFixedFormat: Tek sayfayı dışa aktarır.
    • PageSetup: Kağıt boyutu, yön ve ölçek ayarları.
    • PrintArea: Yazdırma alanını belirler.
    • PrintOut: Kitabı yazıcıya gönderir.
    • SaveAs: Kitabı farklı biçimde kaydeder.
    • On Error: Hata yakalama deyimi.
    • METNEÇEVİR: Hücredeki tarihi dosya adına uygun metne çevirmek için kullanılır.
Ö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