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.
Parametreler:
Parametreleri adlandırarak yazmak (Type:=xlTypePDF gibi) kodu okunaklı kılar ve atlanan isteğe bağlı parametrelerde virgül saymaktan kurtarır.
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.
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.
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.
İ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.
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.
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.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.| A | B | C | |
|---|---|---|---|
| 1 | Sabit | Anlam | Sayısal değer |
| 2 | xlTypePDF | PDF biçimi | 0 |
| 3 | xlTypeXPS | XPS biçimi | 1 |
| 4 | xlQualityStandard | Standart kalite | 0 |
| 5 | xlQualityMinimum | En düşük kalite | 1 |
SabitlerExcelDepo v1.0.0
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.| A | B | C | |
|---|---|---|---|
| 1 | Şube | Ay | Dosya Adı |
| 2 | İstanbul | Ocak | Satis_İstanbul_Ocak.pdf |
| 3 | Ankara | Şubat | Satis_Ankara_Şubat.pdf |
| 4 | İzmir | Mart | Satis_İzmir_Mart.pdf |
| 5 | Bursa | Nisan | Satis_Bursa_Nisan.pdf |
Rapor AdlarıExcelDepo v1.0.0
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.| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Ürün | Bölge | Adet | Birim Fiyat | Tutar |
| 2 | Klavye | Marmara | 12 | 350,00 | C2*D2 |
| 3 | Fare | Ege | 25 | 150,00 | C3*D3 |
| 4 | Monitör | İç Anadolu | 8 | 2.400,00 | C4*D4 |
| 5 | Yazıcı | Akdeniz | 5 | 3.100,00 | C5*D5 |
Satış ListesiExcelDepo v1.0.0
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.