Yazdırılan sayfayı PDF olarak kaydetmek?

tirEdsOuL

Altın Üye
Katılım
3 Şubat 2009
Mesajlar
326
Excel Vers. ve Dili
Office 2016
Altın Üyelik Bitiş Tarihi
24-08-2026
Merhaba;
Birden fazla şablonumun bulunduğu bir dosyam var. Her sayfa, çıktı alındığında tek sayfa olarak çıkmaktadır. Ben yazdırdığım her sayfanın ya da önceden belirleyeceğim sayfaların, excel kitabının bulunduğu klasöre PDF olarak otomatik kaydetmesini istiyorum. Böyle birşey mümkün müdür?

Mümkün ise, kaydetme şu şekilde olabilir mi?
Yazdırılan sayfanın adı ile bir klasör açıp, belirtilen hücrelerdeki isim ve tarihi dosya adı olarak kaydetsin.

Yada sizin öneriniz nedir?

Teşekkürler, iyi çalışmalar..
 

Ekli dosyalar

tirEdsOuL

Altın Üye
Katılım
3 Şubat 2009
Mesajlar
326
Excel Vers. ve Dili
Office 2016
Altın Üyelik Bitiş Tarihi
24-08-2026
Excel'in kendi makro kaydet özelliği ile bir yazdır butonu oluşturup aşağıdaki kod ile dosya adında kaydetmeyi yaptım. Yalnız burada şöyle 2 sorunum var;

1- Bu kod varsayılan yazıcıya direk yazdırıyor, ben farklı bir yazıcıdan çıktı almak isteyebilirim. Bunun için kodun ben CTRL+P ile yazdır dedikten sonra aktif olması gerekiyor.

2- Kırmızı ile belirtilen dosya adının yerine; Excelin bulunduğu klasörde, yazdırılan ilgili sayfanın adında bir klasör var ise onun içine ilgili hücrelerin adları ile kayıt etmesi, yok ise ilgili sayfanın adına bir klasör oluşturup ilgili hücrelerin adları ile kayıt etmesi.

Kod:
Sub YazdırPDF()
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
        IgnorePrintAreas:=False
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        [COLOR="Red"]"C:\Users\ebulut\Desktop\Dekont.pdf"[/COLOR], Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
        False
End Sub
 

tirEdsOuL

Altın Üye
Katılım
3 Şubat 2009
Mesajlar
326
Excel Vers. ve Dili
Office 2016
Altın Üyelik Bitiş Tarihi
24-08-2026
Tekrar merhaba

Yazdırma sorununu ve dosyaya isim verme sorununu halletim. Tek sıkıntım şuanda excel dosyasının bulunduğu dosyaya yazdırılan aktif sayfa adında bir klasör oluşturup, PDF'i onun içine kaydetmesi..


Kod:
Private Sub YazdırPDF()
Dim sh As Worksheet
Set sh = ActiveSheet
yol = ThisWorkbook.Path
isim = sh.Range("B3").Value & "-" & Format(Now, "yyyy-mm-dd-hh-mm")

Application.Dialogs(xlDialogPrint).Show

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=yol _
& "\" & isim & ".pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True

ActiveWorkbook.Save
End Sub
 

tirEdsOuL

Altın Üye
Katılım
3 Şubat 2009
Mesajlar
326
Excel Vers. ve Dili
Office 2016
Altın Üyelik Bitiş Tarihi
24-08-2026
Biraz kendi kendime konuşuyor gibi oluyorum farkındayım ama kurcaladıkça birşeyler çıkıyor :)
Klasöre isim verme olayını da halletim ama şöyle bir sıkıntım var. İlgili sayfa adında bir klasör yoksa ise problem yok kod çalışıyor, klasörü oluşturuyor ve kayıt işlemini yapıyor.
Ama ilgili sayfa adında klasör var ise aşağıda kırmızı ile belittiğim alanda hata veriyor bu klasörden olduğu için..

Buraya bir if sorgusu gerekiyor sanırım, aynı sayfa adından varsa klasör oluşturma yoksa ise oluştur gibi.. Bunu nasıl çözebilirim ?


Kod:
Private Sub YazdırPDF()
Dim sh As Worksheet
Set sh = ActiveSheet
Set ds = CreateObject("Scripting.FileSystemObject")
yol = ThisWorkbook.Path & "\" & ActiveSheet.Name
isim = sh.Range("B3").Value & " - " & Format(Now, "yyyy-mm-dd-hh-mm")

Application.Dialogs(xlDialogPrint).Show

[COLOR="Red"]ds.CreateFolder yol[/COLOR]

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=yol _
& "\" & isim & ".pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True

ActiveWorkbook.Save
End Sub
 

tirEdsOuL

Altın Üye
Katılım
3 Şubat 2009
Mesajlar
326
Excel Vers. ve Dili
Office 2016
Altın Üyelik Bitiş Tarihi
24-08-2026
Şuanda hiçbir problem kalmamıştır :) çalışan kod aşağıdaki gibidir..

Kod:
Private Sub YazdırPDF()
Dim sh As Worksheet
Set sh = ActiveSheet
Set ds = CreateObject("Scripting.FileSystemObject")
yol = ThisWorkbook.Path & "\" & ActiveSheet.Name
isim = sh.Range("B3").Value & " - " & Format(Now, "yyyy-mm-dd-hh-mm")

Application.Dialogs(xlDialogPrint).Show

kontrol = ds.FolderExists(yol)
If kontrol <> True Then
ds.CreateFolder yol
End If

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=yol _
& "\" & isim & ".pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True

ActiveWorkbook.Save
End Sub
 
Katılım
21 Şubat 2017
Mesajlar
5
Excel Vers. ve Dili
excel 2013
Merhabalar,
bir excel çalışmam var.
içinde 6 çalışma sayfası var.
bunlardan 3 tanesine girilen veriler sonucunda diğer 3 ünde veriler ve tablolar oluşuyor.

a - b - c - d - e - f

d-e-f veri alanları

a-b-c sonuç tablo olanlar

a sayfasına koyacağın bir PDF yap butonu ile

a-b-c sayfalarını tek bir pdf e çevirmek ve a sayfası içinde bir kutucuktaki veriyi dosya adı olarak PDF şeklinde kayıt etmesini istiyorum. ancak makro kodunu bir türlü beceremedim.

yardımcı olan olursa sevinirim.

Teşekkür
 

tirEdsOuL

Altın Üye
Katılım
3 Şubat 2009
Mesajlar
326
Excel Vers. ve Dili
Office 2016
Altın Üyelik Bitiş Tarihi
24-08-2026
Merhabalar,
bir excel çalışmam var.
içinde 6 çalışma sayfası var.
bunlardan 3 tanesine girilen veriler sonucunda diğer 3 ünde veriler ve tablolar oluşuyor.

a - b - c - d - e - f

d-e-f veri alanları

a-b-c sonuç tablo olanlar

a sayfasına koyacağın bir PDF yap butonu ile

a-b-c sayfalarını tek bir pdf e çevirmek ve a sayfası içinde bir kutucuktaki veriyi dosya adı olarak PDF şeklinde kayıt etmesini istiyorum. ancak makro kodunu bir türlü beceremedim.

yardımcı olan olursa sevinirim.

Teşekkür
örnek dosya eklerseniz belki yardımcı olabilirim.
 
Katılım
21 Şubat 2017
Mesajlar
5
Excel Vers. ve Dili
excel 2013
Merhabalar,
örnek dosya yükleme alanını bulamadım. nasıl yükleniyor.
tşk
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,307
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Deneyiniz.

Dosya yolunu kendinize göre düzenlersiniz.

Kod:
Sub Pdf_Kaydet()
    Sheets(Array("DEBİT", "DEBİT DTY", "DEBİT1")).Select
    Sheets("DEBİT").Activate
    Yol = "C:\Users\Desktop\" & Sheets("DEBİT").Range("G3").Value & ".PDF"
    ActiveSheet.ExportAsFixedFormat _
    Type:=xlTypePDF, Filename:=Yol, _
    Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, _
    IgnorePrintAreas:=False, _
    OpenAfterPublish:=False
    Sheets("DEBİT").Select
    MsgBox "İşleminiz tamamlanmıştır.", vbInformation
End Sub
 
Katılım
21 Şubat 2017
Mesajlar
5
Excel Vers. ve Dili
excel 2013
mrhabalar
işleminiz tamamlanmıştır diyor ama hiçbir yere pdf dosyası atmıyor.
yolu değiştirdim. yinede aynı.
 
Katılım
21 Şubat 2017
Mesajlar
5
Excel Vers. ve Dili
excel 2013
tamam dır

Sub Pdf_Kaydet()
Sheets(Array("DEBİT", "DEBİT DTY", "DEBİT1")).Select
Sheets("DEBİT").Activate
isim = Sheets("DEBİT").Range("G3").Value & ".PDF"
yol = "C:\Users\Cevdet BULUT\Desktop"

ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePDF, Filename:=isim, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False
Sheets("DEBİT").Select
MsgBox "İşleminiz tamamlanmıştır.", vbInformation

End Sub

şeklinde yapınca oldu
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,307
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Siz oldu diyorsanız mesele yoktur..
 

Agah93

Altın Üye
Katılım
17 Nisan 2020
Mesajlar
31
Excel Vers. ve Dili
ofis 365
Altın Üyelik Bitiş Tarihi
02-09-2025
Şuanda hiçbir problem kalmamıştır :) çalışan kod aşağıdaki gibidir..

Kod:
Private Sub YazdırPDF()
Dim sh As Worksheet
Set sh = ActiveSheet
Set ds = CreateObject("Scripting.FileSystemObject")
yol = ThisWorkbook.Path & "\" & ActiveSheet.Name
isim = sh.Range("B3").Value & " - " & Format(Now, "yyyy-mm-dd-hh-mm")

Application.Dialogs(xlDialogPrint).Show

kontrol = ds.FolderExists(yol)
If kontrol <> True Then
ds.CreateFolder yol
End If

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=yol _
& "\" & isim & ".pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True

ActiveWorkbook.Save
End Sub
merhaba hocam benimde böyle birşeye ihtiyacım var Ancak Yinede uygulamadan özet geçeyim istedim.
Örneğin personelin iznini yazıyorum işlem bitti YAZDIR (Makrolu) butonuna bastığımda hem yazdırsın hemde bir hücre belirleyeceğim hücrede bulunan personel ismi vb. bilgilerle ile birlikte izin klasörüne kaydetsin.
Bu yazmış olduğunuz kod nasıl uygulanabilir. Konu Hakkında yardımcı olabilir misiniz
Teşekkür ederim.
Sağlıcakla kalın...
 
Katılım
16 Aralık 2015
Mesajlar
1
Excel Vers. ve Dili
2010
Altın Üyelik Bitiş Tarihi
23/10/2021
Merhaba
Kullandığım excel dosyamda birbirinden bağımsız 2 adet pdf e çevirme ve yazdırma şeklinde makrom bulunuyor. yazdırma makrom; a10 hücresine herhangi bir sayı girdiğimde a1 hücresindeki sayıya göre dinamik şekilde değişen verilere göre yazdırma işlemini yapıyor.bunu aynı şekilde dinamik şekilde değişen bir pdf e çevirme isteğim var ancak başarabilmiş değilim.Pdf e çevirebiliyorum ancak yazdırma işlemindeki gibi dinamik halde yapamıyorum, yardımcı olabilecek varsa çok sevinirim.
Pdf kaydetme Kodu şu;

Sub PdfKaydet()
Dim wsA As Worksheet
Dim wbA As Workbook
Dim strTime As String
Dim strName As String
Dim strPath As String
Dim strFile As String
Dim strPathFile As String
Dim myFile As Variant
On Error GoTo errHandler


Set wbA = ActiveWorkbook
Set wsA = ActiveSheet
strTime = Format(Now(), "yyyymmdd\_hhmm")




strPath = wbA.Path
If strPath = "" Then
strPath = Application.DefaultFilePath
End If
strPath = strPath & "\"


strName = Replace(wsA.Name, " ", "")
strName = Replace(strName, ".", "_")




strFile = strName & "_" & strTime & ".pdf"
strPathFile = strPath & strFile




myFile = Application.GetSaveAsFilename _
(InitialFileName:=strPathFile, _
FileFilter:="PDF Dosyaları (*.pdf), *.pdf", _
Title:="Kaydetme Konumunu Seçin")


If myFile <> "False" Then
wsA.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=myFile, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False
MsgBox "PDF dosyası kaydedildi " _
& vbCrLf _
& myFile
End If


exitHandler:
Exit Sub
errHandler:
MsgBox "Dosya oluşturulamadı"
Resume exitHandler
End Sub

Dinamik yazdırma kodum şu;

Sub Yazdır()
Dim syfIGMIGG As Worksheet
Dim syfSayfa1 As Worksheet
Dim bak As Integer

Set syfIGMIGG = Worksheets("IGMIGG")
Set syfSayfa1 = Worksheets("Sayfa1")

For bak = syfSayfa1.Range("A1").Value To syfSayfa1.Range("A10").Value
syfSayfa1.Range("A1").Value = bak
syfSayfa1.PrintOut Copies:=1, Collate:=True
Next
End Sub
 

ulutanas

Altın Üye
Katılım
8 Kasım 2008
Mesajlar
578
Excel Vers. ve Dili
Excel Vers. ve Dili Ofis 2021 TR 32 Bit
Altın Üyelik Bitiş Tarihi
süresiz üye
Arkadaşlar merhaba,
Aynı konu ile ilgili benimde bir sorum olacak, 12. mesajda Cevdet beyin paylaştığı kod da bir kısım değişiklikler yaparak kendi dosyama uyarladım ama dosya ismini istediğim klasöre kaydederken hep aynı isimli dosyayı değiştirerek kaydediyor.

Aşağıdaki kodda Filename:="C:\Users\ulutan\Desktop\müşteri hesapları\cari rapor.pdf", _ kısmında cari rapor adında kaydediyor. Farklı bir müşterinin raporunu kaydettiğim zaman da aynı dosyada içerik değişerek kayıt yapıyor.

Kod:
Private Sub PDF_Click()
Sheets(Array("MUHASEBE_RAPOR")).Select
Sheets("MUHASEBE_RAPOR").Activate
isim = Sheets("MUHASEBE_RAPOR").Range("b1").Value & ".PDF"
yol = "C:\Users\ulutan\Desktop\müşteri hesapları\cari rapor"

With Sheets("MUHASEBE_RAPOR")
    .ExportAsFixedFormat _
    Type:=xlTypePDF, _
    Filename:="C:\Users\ulutan\Desktop\müşteri hesapları\cari rapor.pdf", _
    Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, _
    IgnorePrintAreas:=False, _
    OpenAfterPublish:=False
    Sheets("MUHASEBE_RAPOR").Select
    MsgBox "İşleminiz tamamlanmıştır.", vbInformation
End With

End Sub
Benim istediğim ise MUHASEBE_RAPOR sayfasındaki b1 hücresinde hangi müşterinin raporunu alıyorsam o müşterinin ismi yazılı b1 hücresinde hangi müşterinin ismi yazılı ise ona göre ayrı ayrı .pdf olarak kayıt yapmak.

Yardımcı olan arkadaşlara şimdiden teşekkür ederim.
İyi çalışmalar...
 
Katılım
20 Şubat 2007
Mesajlar
659
Excel Vers. ve Dili
2007 Excel, Word Tr
Merhaba,
Kod:
Private Sub PDF_Click()
Sheets(Array("MUHASEBE_RAPOR")).Select
Sheets("MUHASEBE_RAPOR").Activate
isim = Sheets("MUHASEBE_RAPOR").Range("b1").Value & ".PDF"
yol = "C:\Users\ulutan\Desktop\müşteri hesapları\cari rapor\"

With Sheets("MUHASEBE_RAPOR")
    .ExportAsFixedFormat _
    Type:=xlTypePDF, _
    Filename:=yol & isim, _
    Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, _
    IgnorePrintAreas:=False, _
    OpenAfterPublish:=False
    Sheets("MUHASEBE_RAPOR").Select
    MsgBox "İşleminiz tamamlanmıştır.", vbInformation
End With

End Sub
 

ulutanas

Altın Üye
Katılım
8 Kasım 2008
Mesajlar
578
Excel Vers. ve Dili
Excel Vers. ve Dili Ofis 2021 TR 32 Bit
Altın Üyelik Bitiş Tarihi
süresiz üye
Necati bey merhaba bu şekilde yaptığım zaman aşağıdaki kısımın tamamında hata veriyor

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

Ekli dosyalar

Son düzenleme:
Katılım
20 Şubat 2007
Mesajlar
659
Excel Vers. ve Dili
2007 Excel, Word Tr
Arka planda aynı isimli "pdf" dosyası açık kalmış galiba. Onu kapatıp deneyiniz.
 

ulutanas

Altın Üye
Katılım
8 Kasım 2008
Mesajlar
578
Excel Vers. ve Dili
Excel Vers. ve Dili Ofis 2021 TR 32 Bit
Altın Üyelik Bitiş Tarihi
süresiz üye
Dosyayı kapattım sildim denedim yine aynı hatayı veriyor.
 
Üst