Otomatik Pdf yapma

bjk55

Altın Üye
Katılım
29 Mart 2010
Mesajlar
190
Excel Vers. ve Dili
TÜRKÇE - MİCROSOFT OFFİCE PROFESSİONAL PLUS 2021
Altın Üyelik Bitiş Tarihi
05-03-2036
Merhaba Mutabık sayfasında Bulunan liste de ayrı ayrı firmalar var ama 28 - 35 ci (sarı) satırlar hep sabit sadece üstte filtrelediğim firmaları ben ayrı ayrı filtreden seçerek hepsini örnekteki gibi pdf yapmaktayım. Bunun için makro ile listede bulunan bütün firmalara ayrı ayrı bir butona tıkladığım zaman otomatik pdf nasıl yapabilirim. Birde Liste çok uzun sa dikey olarak liste kısaysa yatay olarak pdf yapmak istiyorum.Dosya ektedir.
 

Ekli dosyalar

bjk55

Altın Üye
Katılım
29 Mart 2010
Mesajlar
190
Excel Vers. ve Dili
TÜRKÇE - MİCROSOFT OFFİCE PROFESSİONAL PLUS 2021
Altın Üyelik Bitiş Tarihi
05-03-2036
Tekrar Merhaba, bu konuyla ilgili nasıl birşey yapabilirim. Yardım ederseniz sevinirim. İyi Akşamlar
 

bjk55

Altın Üye
Katılım
29 Mart 2010
Mesajlar
190
Excel Vers. ve Dili
TÜRKÇE - MİCROSOFT OFFİCE PROFESSİONAL PLUS 2021
Altın Üyelik Bitiş Tarihi
05-03-2036
Merhaba Mutabık sayfasında Bulunan liste de ayrı ayrı firmalar var ama 28 - 35 ci (sarı) satırlar hep sabit sadece üstte filtrelediğim firmaları ben ayrı ayrı filtreden seçerek hepsini örnekteki gibi pdf yapmaktayım. Bunun için makro ile listede bulunan bütün firmalara ayrı ayrı bir butona tıkladığım zaman otomatik pdf nasıl yapabilirim. Birde Liste çok uzun sa dikey olarak liste kısaysa yatay olarak pdf yapmak istiyorum.Dosya ektedir.
Bilen birisi varmıdır acaba :)
 

Korhan Ayhan

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

C++:
Option Explicit

Sub Mutabakat_Mektubu()
    Dim S1 As Worksheet, Musteri_Listesi As Object, Musteri As Variant, X As Long
    
    Application.ScreenUpdating = False
    
    Set Musteri_Listesi = VBA.CreateObject("Scripting.Dictionary")
    Set S1 = Sheets("MUTABIK")
    
    On Error Resume Next
    If S1.AutoFilterMode Then S1.ShowAllData
    On Error GoTo 0
    
    For X = 2 To S1.Cells(S1.Rows.Count, "O").End(3).Row
        If Not Musteri_Listesi.Exists(S1.Cells(X, "B").Value) Then
            Musteri_Listesi.Add S1.Cells(X, "B").Value, False
        End If
    Next
    
    For Each Musteri In Musteri_Listesi.Keys
        S1.Range("A1:O" & S1.Cells(S1.Rows.Count, "O").End(3).Row).AutoFilter 2, Musteri
        If S1.Cells(S1.Rows.Count, "O").End(3).Row > 30 Then
            S1.PageSetup.Orientation = xlPortrait
        Else
            S1.PageSetup.Orientation = xlLandscape
        End If
        S1.ExportAsFixedFormat Type:=xlTypePDF, _
        Filename:=ThisWorkbook.Path & "\" & Musteri & " - Mutabakat Mektubu.pdf", _
        OpenAfterPublish:=False
    Next
    
    On Error Resume Next
    If S1.AutoFilterMode Then S1.ShowAllData
    On Error GoTo 0
    
    Set Musteri_Listesi = Nothing
    Set S1 = Nothing
    
    Application.ScreenUpdating = True
    
    MsgBox "Mutabakat mektupları oluşturulmuştur.", vbInformation
End Sub
 

bjk55

Altın Üye
Katılım
29 Mart 2010
Mesajlar
190
Excel Vers. ve Dili
TÜRKÇE - MİCROSOFT OFFİCE PROFESSİONAL PLUS 2021
Altın Üyelik Bitiş Tarihi
05-03-2036
Korhan Bey çok çok teşekkür ederim, yalnız şu aşağıda ki kodlamaya "R1" sütünunu eklemek istiyorum

Filename:=ThisWorkbook.Path & "\" & Musteri & " - Mutabakat Mektubu.pdf",
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,766
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Kendiniz uygun yere yazarsınız..

Filename:=ThisWorkbook.Path & "\" & Musteri & " " & S1.Range("R1").Value & " - Mutabakat Mektubu.pdf",
 

bjk55

Altın Üye
Katılım
29 Mart 2010
Mesajlar
190
Excel Vers. ve Dili
TÜRKÇE - MİCROSOFT OFFİCE PROFESSİONAL PLUS 2021
Altın Üyelik Bitiş Tarihi
05-03-2036
Kendiniz uygun yere yazarsınız..

Filename:=ThisWorkbook.Path & "\" & Musteri & " " & S1.Range("R1").Value & " - Mutabakat Mektubu.pdf",
Çok teşekkür ederim ama
S1.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=ThisWorkbook.Path & "\" & Musteri & " " & S1.Range("R1").Value & " - Mutabakat Mektubu.pdf",
OpenAfterPublish:=False

bu şekilde girdiğim zaman hata verdi
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,766
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Bahsi geçen hücrede ne yazıyor?

Bildiğiniz üzere dosya isimlerinde kullanılmaması gereken karakterler var. İlgili hücrede yasaklı olan bir karakter varsa hata vermesi normaldir. Bunu düzenlemeniz gerekir.
 

bjk55

Altın Üye
Katılım
29 Mart 2010
Mesajlar
190
Excel Vers. ve Dili
TÜRKÇE - MİCROSOFT OFFİCE PROFESSİONAL PLUS 2021
Altın Üyelik Bitiş Tarihi
05-03-2036
Merhaba Korhan Bey, tekrardan bu listeyi sadece Tarih olarak pdf yapabilir miyim. Müşteri bazında değil Tarih bazında
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,766
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Aslında kod içinde sütun adresleri belli kendinizde bu düzenlemeyi yapabilirsiniz.
 

bjk55

Altın Üye
Katılım
29 Mart 2010
Mesajlar
190
Excel Vers. ve Dili
TÜRKÇE - MİCROSOFT OFFİCE PROFESSİONAL PLUS 2021
Altın Üyelik Bitiş Tarihi
05-03-2036
If Not Musteri_Listesi.Exists(S1.Cells(X, "B").Value) Then
Musteri_Listesi.Add S1.Cells(X, "B").Value, False

Burda yazan “B” leri A yaptım bu sefer boş çıktı sadece ana başlık çıkıyor
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,766
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Bu satırdaki 2 değerini de 1 olarak değiştirmelisiniz. Çünkü tarihler A sütununda bulunuyor.

S1.Range("A1:O" & S1.Cells(S1.Rows.Count, "O").End(3).Row).AutoFilter 2, Musteri

Ayrıca anlamlı olması bakımından aşağıdaki tanımlamaları değiştirmeniz daha sağlıklı olacaktır.

Musteri_Listesi - Tarih_Listesi
Musteri - Tarih
 

bjk55

Altın Üye
Katılım
29 Mart 2010
Mesajlar
190
Excel Vers. ve Dili
TÜRKÇE - MİCROSOFT OFFİCE PROFESSİONAL PLUS 2021
Altın Üyelik Bitiş Tarihi
05-03-2036
S1.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=ThisWorkbook.Path & "\" & Musteri & "_MUTABAKAT MEKTUBU " & S1.Range("U1") & ".pdf", _
OpenAfterPublish:=False

burda hata vermekte Tarihlerde "." olduğu için dosyayı kaydedemiyor sanırsam
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,766
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Bakınız 8 nolu mesaj..
 

bjk55

Altın Üye
Katılım
29 Mart 2010
Mesajlar
190
Excel Vers. ve Dili
TÜRKÇE - MİCROSOFT OFFİCE PROFESSİONAL PLUS 2021
Altın Üyelik Bitiş Tarihi
05-03-2036
[QUOTE="K

Option Explicit

Sub Mutabakat_Mektubu()
Dim S1 As Worksheet, Tarih_Listesi As Object, Tarih As Variant, X As Long

Application.ScreenUpdating = False

Set Tarih_Listesi = VBA.CreateObject("Scripting.Dictionary")
Set S1 = Sheets("MUTABIK")

On Error Resume Next
If S1.AutoFilterMode Then S1.ShowAllData
On Error GoTo 0

For X = 2 To S1.Cells(S1.Rows.Count, "O").End(3).Row
If Not Tarih_Listesi.Exists(S1.Cells(X, "A").Value) Then
Tarih_Listesi.Add S1.Cells(X, "A").Value, False
End If
Next

For Each Tarih In Tarih_Listesi.Keys
S1.Range("A1:O" & S1.Cells(S1.Rows.Count, "O").End(3).Row).AutoFilter 1, Tarih
If S1.Cells(S1.Rows.Count, "O").End(3).Row > 30 Then
S1.PageSetup.Orientation = xlPortrait
Else
S1.PageSetup.Orientation = xlLandscape
End If
S1.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=ThisWorkbook.Path & "\" & Tarih & "_GÜNLÜK İŞLEMLER " & S1.Range("U1") & ".pdf", _
OpenAfterPublish:=False
Next

On Error Resume Next
If S1.AutoFilterMode Then S1.ShowAllData
On Error GoTo 0

Set Tarih_Listesi = Nothing
Set S1 = Nothing

Application.ScreenUpdating = True

MsgBox "Mutabakat mektupları oluşturulmuştur.", vbInformation
End Sub





[/QUOTE]

kodu bu şekilde yaptığımda Tarihleri kayıt ediyor ama kayıt ettiği pdf de o tarihde ki verileri yazmıyor
 
Son düzenleme:

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,766
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Foruma kod eklerken mesaj penceresindeki ... (3 nokta) menüsüne basarak eklerseniz daha okunaklı görünecektir.

Aşağıdaki kodu deneyiniz.

C++:
Option Explicit

Sub Mutabakat_Mektubu()
    Dim S1 As Worksheet, Tarih_Listesi As Object, Tarih As Variant, X As Long
   
    Application.ScreenUpdating = False
   
    Set Tarih_Listesi = VBA.CreateObject("Scripting.Dictionary")
    Set S1 = Sheets("MUTABIK")
   
    On Error Resume Next
    If S1.AutoFilterMode Then S1.ShowAllData
    On Error GoTo 0
   
    For X = 2 To S1.Cells(S1.Rows.Count, "O").End(3).Row
        If Not Tarih_Listesi.Exists(S1.Cells(X, "A").Value) Then
            Tarih_Listesi.Add S1.Cells(X, "A").Value, False
        End If
    Next
   
    For Each Tarih In Tarih_Listesi.Keys
        S1.Range("A1:O" & S1.Cells(S1.Rows.Count, "O").End(3).Row).AutoFilter Field:=1, Operator:=xlFilterValues, Criteria2:=Array(2, Format(Tarih, "yyyy-mm-dd"))
        If S1.Cells(S1.Rows.Count, "O").End(3).Row > 30 Then
            S1.PageSetup.Orientation = xlPortrait
        Else
            S1.PageSetup.Orientation = xlLandscape
        End If
        S1.ExportAsFixedFormat Type:=xlTypePDF, _
        Filename:=ThisWorkbook.Path & "\" & Tarih & "_GÜNLÜK İŞLEMLER " & S1.Range("U1") & ".pdf", _
        OpenAfterPublish:=False
    Next
   
    On Error Resume Next
    If S1.AutoFilterMode Then S1.ShowAllData
    On Error GoTo 0
   
    Set Tarih_Listesi = Nothing
    Set S1 = Nothing
   
    Application.ScreenUpdating = True
   
    MsgBox "Mutabakat mektupları oluşturulmuştur.", vbInformation
End Sub
 

bjk55

Altın Üye
Katılım
29 Mart 2010
Mesajlar
190
Excel Vers. ve Dili
TÜRKÇE - MİCROSOFT OFFİCE PROFESSİONAL PLUS 2021
Altın Üyelik Bitiş Tarihi
05-03-2036
Teşekkür ederim.Elinize sağlık
 
Son düzenleme:

bjk55

Altın Üye
Katılım
29 Mart 2010
Mesajlar
190
Excel Vers. ve Dili
TÜRKÇE - MİCROSOFT OFFİCE PROFESSİONAL PLUS 2021
Altın Üyelik Bitiş Tarihi
05-03-2036
Korhan Bey

dosyayı kaydederken

25.02.2025_GÜNLÜK İŞLEMLER yerine Tarih sırasına göre 01_25.02.2025_GÜNLÜK İŞLEMLER olarak nasıl kaydedebilirim. 1 sayısını otomatik sırayla vermesini istiyorum
 
Üst