Formları tek pdf olarak dökme

Katılım
23 Aralık 2009
Mesajlar
36
Excel Vers. ve Dili
2016
Değerli hocalarım öncelikle herkese kolay gelsin;
Aşağıdaki makroyu çalıştırdığımda listedeki herkes için ayrı ayrı form oluşturuyor ve bunları masaüstüne açtığı bir klasöre kaydediyor. benim istediğim ise tüm formları peşpeşe sayfalar halinde tek pdf olarak dökmesi.
nerede hata yapıyorum, bakma imkanınız var mı?
şimdiden teşekkürler


"
Sub SicilNumaralariniAktar_ve_PDFKaydet()
Dim wsListe As Worksheet
Dim wsForm As Worksheet
Dim LastRow As Long
Dim i As Long
Dim SicilNo As String
Dim PDFFileName As String
Dim DesktopPath As String
Dim FolderPath As String

' Liste sayfasını ve forma sayfasını belirle
Set wsListe = Sheets("Liste") ' "Liste" kısmını kendi liste sayfanızın adıyla değiştirin
Set wsForm = Sheets("Form") ' "Form" kısmını kendi form sayfanızın adıyla değiştirin

' Masaüstü yolu
DesktopPath = CreateObject("WScript.Shell").SpecialFolders("Desktop")

' Klasör adı
FolderPath = DesktopPath & "\Performans Notları\"

' Klasörü oluştur
MkDir FolderPath

' Liste sayfasındaki son satırı bul
LastRow = wsListe.Cells(wsListe.Rows.Count, "B").End(xlUp).Row

' Sicil numaralarını forma aktar ve PDF olarak kaydet
For i = 3 To LastRow ' Sicil numaraları B3:B999 arasında olduğunu varsayıyoruz
' Sicil numarasını al
SicilNo = wsListe.Cells(i, 2).Value ' "B" sütununu kendi sicil numarası sütununuzla değiştirin

' Sicil numarasını forma aktar
wsForm.Range("W2").Value = SicilNo ' Formunuzun yapısına göre hücreyi değiştirin

' PDF olarak kaydet
PDFFileName = FolderPath & SicilNo & ".pdf" ' Klasör yolu ve dosya adını değiştirin
wsForm.ExportAsFixedFormat Type:=xlTypePDF, Filename:=PDFFileName

' Formu temizle (sonraki sicil numarası için)
wsForm.Range("W2").ClearContents
Next i

' İşlem tamamlandığında uyarı göster
MsgBox "PDF Dökümü Tamamlandı.", vbInformation

' Form sayfasındaki V1 hücresine Liste sayfasındaki B3 değerini tekrar getir
wsForm.Range("W2").Value = wsListe.Range("B3").Value
End Sub


"
 
Katılım
20 Şubat 2007
Mesajlar
670
Excel Vers. ve Dili
2007 Excel, Word Tr
Merhaba, tüm sicil formlarını aynı klasörde "Meydan.pdf" diye kaydeder.
Kod:
Sub SicilNumaralariniAktar_ve_PDFKaydet()
Dim wsListe As Worksheet
Dim wsForm As Worksheet
Dim LastRow As Long
Dim i As Long
Dim SicilNo As String
Dim PDFFileName As String
Dim DesktopPath As String
Dim FolderPath As String
Dim wbkT As Workbook

Application.ScreenUpdating = False

' Liste sayfasını ve forma sayfasını belirle
Set wsListe = Sheets("Liste") ' "Liste" kısmını kendi liste sayfanızın adıyla değiştirin
Set wsForm = Sheets("Form") ' "Form" kısmını kendi form sayfanızın adıyla değiştirin
Set wbkT = Workbooks.Add(Template:=xlWBATWorksheet)

' Masaüstü yolu
DesktopPath = CreateObject("WScript.Shell").SpecialFolders("Desktop")

' Klasör adı
FolderPath = DesktopPath & "\Performans Notları\"

' Klasörü oluştur
If Len(Dir(FolderPath, vbDirectory)) = 0 Then MkDir FolderPath

' Liste sayfasındaki son satırı bul
LastRow = wsListe.Cells(wsListe.Rows.Count, "B").End(xlUp).Row

' Sicil numaralarını forma aktar ve PDF olarak kaydet
For i = 3 To LastRow ' Sicil numaraları B3:B999 arasında olduğunu varsayıyoruz
' Sicil numarasını al
SicilNo = wsListe.Cells(i, 2).Value ' "B" sütununu kendi sicil numarası sütununuzla değiştirin

' Sicil numarasını forma aktar
wsForm.Range("W2").Value = SicilNo ' Formunuzun yapısına göre hücreyi değiştirin

' PDF olarak kaydet
PDFFileName = FolderPath & SicilNo & ".pdf" ' Klasör yolu ve dosya adını değiştirin
wsForm.Copy After:=wbkT.Worksheets(wbkT.Worksheets.Count)

' Formu temizle (sonraki sicil numarası için)
wsForm.Range("W2").ClearContents
Next i

Application.DisplayAlerts = False
wbkT.Worksheets(1).Delete
Application.DisplayAlerts = True
wbkT.ExportAsFixedFormat Type:=xlTypePDF, Filename:=FolderPath & "Meydan.pdf", OpenAfterPublish:=False
wbkT.Close SaveChanges:=False
Application.ScreenUpdating = True
    
' İşlem tamamlandığında uyarı göster
MsgBox "PDF Dökümü Tamamlandı.", vbInformation

' Form sayfasındaki V1 hücresine Liste sayfasındaki B3 değerini tekrar getir
wsForm.Range("W2").Value = wsListe.Range("B3").Value
End Sub
 
Katılım
23 Aralık 2009
Mesajlar
36
Excel Vers. ve Dili
2016
Merhaba, tüm sicil formlarını aynı klasörde "Meydan.pdf" diye kaydeder.
Kod:
Sub SicilNumaralariniAktar_ve_PDFKaydet()
Dim wsListe As Worksheet
Dim wsForm As Worksheet
Dim LastRow As Long
Dim i As Long
Dim SicilNo As String
Dim PDFFileName As String
Dim DesktopPath As String
Dim FolderPath As String
Dim wbkT As Workbook

Application.ScreenUpdating = False

' Liste sayfasını ve forma sayfasını belirle
Set wsListe = Sheets("Liste") ' "Liste" kısmını kendi liste sayfanızın adıyla değiştirin
Set wsForm = Sheets("Form") ' "Form" kısmını kendi form sayfanızın adıyla değiştirin
Set wbkT = Workbooks.Add(Template:=xlWBATWorksheet)

' Masaüstü yolu
DesktopPath = CreateObject("WScript.Shell").SpecialFolders("Desktop")

' Klasör adı
FolderPath = DesktopPath & "\Performans Notları\"

' Klasörü oluştur
If Len(Dir(FolderPath, vbDirectory)) = 0 Then MkDir FolderPath

' Liste sayfasındaki son satırı bul
LastRow = wsListe.Cells(wsListe.Rows.Count, "B").End(xlUp).Row

' Sicil numaralarını forma aktar ve PDF olarak kaydet
For i = 3 To LastRow ' Sicil numaraları B3:B999 arasında olduğunu varsayıyoruz
' Sicil numarasını al
SicilNo = wsListe.Cells(i, 2).Value ' "B" sütununu kendi sicil numarası sütununuzla değiştirin

' Sicil numarasını forma aktar
wsForm.Range("W2").Value = SicilNo ' Formunuzun yapısına göre hücreyi değiştirin

' PDF olarak kaydet
PDFFileName = FolderPath & SicilNo & ".pdf" ' Klasör yolu ve dosya adını değiştirin
wsForm.Copy After:=wbkT.Worksheets(wbkT.Worksheets.Count)

' Formu temizle (sonraki sicil numarası için)
wsForm.Range("W2").ClearContents
Next i

Application.DisplayAlerts = False
wbkT.Worksheets(1).Delete
Application.DisplayAlerts = True
wbkT.ExportAsFixedFormat Type:=xlTypePDF, Filename:=FolderPath & "Meydan.pdf", OpenAfterPublish:=False
wbkT.Close SaveChanges:=False
Application.ScreenUpdating = True
   
' İşlem tamamlandığında uyarı göster
MsgBox "PDF Dökümü Tamamlandı.", vbInformation

' Form sayfasındaki V1 hücresine Liste sayfasındaki B3 değerini tekrar getir
wsForm.Range("W2").Value = wsListe.Range("B3").Value
End Sub
Necati hocam öncelikle vakit ayırdığınız için teşekkür ederim. Listedeki personel sayısınca tek pdf olarak form oluşuyor ama tüm formlarda listede ilk sıradaki personelin bilgileri var. 150 tane form aynı kişiye ait
 
Katılım
20 Şubat 2007
Mesajlar
670
Excel Vers. ve Dili
2007 Excel, Word Tr
Formüller menüsünde hesaplama seçeneklerinizi kontrol ediniz.
Manuel ise otomatik olarak ayarlayınız.
 
Katılım
20 Şubat 2007
Mesajlar
670
Excel Vers. ve Dili
2007 Excel, Word Tr
Başka da bir ihtimal görünmüyor. Bilgisayarınızı kapatıp açmayı deneyin. Forumdakilerin başka tavsiyeleri var mı acaba?
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,554
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Sanal veri içeren örnek dosya paylaşabilirseniz deneme yapılabilir.
 
Üst