• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

  • Forum yazılımı güncelenmiştir.

    Beklenmedik durumlar görürseniz lütfen yönetime iletin.

PDF olarak mail göndermek.

  • Konbuyu başlatan Konbuyu başlatan gkhn2
  • Başlangıç tarihi Başlangıç tarihi
Katılım
20 Aralık 2013
Mesajlar
195
Excel Vers. ve Dili
Microsoft Office Standart 2013 - Microsoft Windows 10 Enterprise
merhabalar

ekteki excelde tek sayfa bulunmaktadır. Bir buton ve makro yardımıyla o sayfayı pdf olarak ataçlayıp outlook üzerinden göndermek istiyorum. Fakat direk göndermeyeceğim. Görüntüleyip birşeyler yazıp ben kendim göndereceğim. Mümkünse mail imzamında otomatik gelmesi güzel olur.


EKLİ DOSYA
 
Aşağıdaki kodu kullanabilirsiniz.

Kod:
Sub MAIL_GONDER()
    Dim Uygulama As Object
    Dim Yeni_Mail As Object
    
    Yol = CreateObject("WScript.Shell").SpecialFolders("Desktop")
    Dosya_Adi = "İSKONTO TABLOSU.pdf"

    Range("Print_Area").ExportAsFixedFormat Type:=xlTypePDF, _
    Filename:=Yol & "\" & Dosya_Adi, _
    Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, _
    IgnorePrintAreas:=False, _
    OpenAfterPublish:=False
    
    Set Uygulama = CreateObject("Outlook.Application")
    Set Yeni_Mail = Uygulama.CreateItem(0)

    With Yeni_Mail
        .Subject = "İSKONTO TABLOSU"
        .Body = "Merhaba," & vbCrLf & vbCrLf & "Ekteki tabloyu inceleyip mutabakat için geri dönüş yapmanızı rica ederim." & vbCrLf & vbCrLf & "İyi çalışmalar dilerim."
        .Attachments.Add Yol & "\" & Dosya_Adi
        .Save
        .To = "mail kime gidecekse adresini buraya yazınız."
        .Display
    End With
    
    Set Uygulama = Nothing
    Set Yeni_Mail = Nothing
End Sub
 
teşekkür ederim
 
Sizin hazırladığınız makroyu kendime uyarlamaya çalışıyorum , dosya adını belirli hücre yapınca .Attachments.Add Yol & "\" & Dosya_Adi satır hata veriyor
SpecialFolders("Desktop") bu satır da desktop değil de desktop\sipariş formu yapınca da hata veriyor
nasıl bir değişiklik yapmam gerekiyor ilgilenirmisiniz




Kod:
Sub MAIL_GONDER()
    Range("H16") = Range("H16") + 1
    Dim Uygulama As Object
    Dim Yeni_Mail As Object
      
    Yol = CreateObject("WScript.Shell").SpecialFolders("Desktop")
    Dosya_Adi = Range("H16") & " " & Range("C14")

    Range("Print_Area").ExportAsFixedFormat Type:=xlTypePDF, _
    Filename:=Yol & "\" & Dosya_Adi, _
    Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, _
    IgnorePrintAreas:=False, _
    OpenAfterPublish:=False
    
    Set Uygulama = CreateObject("Outlook.Application")
    Set Yeni_Mail = Uygulama.CreateItem(0)

    With Yeni_Mail
        .Subject = " SİPARİŞ FORMU"
        .Body = "Merhaba," & vbCrLf & vbCrLf & "Ekteki sipariş formunu inceleyip geri dönüş yapmanızı rica ederim." & vbCrLf & vbCrLf & "İyi çalışmalar dilerim."
        .Attachments.Add Yol & "\" & Dosya_Adi
        .Save
        .To = Range("c4")
        .CC = "- ; +"
        .Display
    End With
    
    
    Set Uygulama = Nothing
    Set Yeni_Mail = Nothing
End Sub
 
Aynı soru için yeni konu açmayayım dedim ama 2019 konusu olduğu için mi kimse cevap vermiyor
 
Merhaba,

Yoğun olduğumdan ancak cevap verebiliyorum.

Kodları genelde deneyerek paylaşıyorum. Bu sebeple sizde hata vermesi sizin hatalı bir değişiklik yapmanızdan kaynaklı olabilir.

Böyle durumlarda kodu F8 tuşu ile adım adım çalıştırıp kullandığınız değişkenlerin aldığı değerleri bir yanlışlık varmı diye gözle kontrol edebilirsiniz. Bu yöntemi kullanarak "Yol" ve "Dosya_Adi" değişkenlerinin aldığı değerleri paylaşırsanız yorum yapma şansımız olabilir.
 
Merhaba,

Yoğun olduğumdan ancak cevap verebiliyorum.

Kodları genelde deneyerek paylaşıyorum. Bu sebeple sizde hata vermesi sizin hatalı bir değişiklik yapmanızdan kaynaklı olabilir.

Böyle durumlarda kodu F8 tuşu ile adım adım çalıştırıp kullandığınız değişkenlerin aldığı değerleri bir yanlışlık varmı diye gözle kontrol edebilirsiniz. Bu yöntemi kullanarak "Yol" ve "Dosya_Adi" değişkenlerinin aldığı değerleri paylaşırsanız yorum yapma şansımız olabilir.
merhaba,
korhan hocam bende 3 4 tane konudan karıştırarak kodlarda ki hataları düzeltim.
sürekli aynı adla kaydettiğinden dolayı numaratör makrosu ile o sorunu da çözdüm
şuan sıkıntısız çalışıyor

makrolara 3 sene gibi ara verince unutmuşuz basit ayrıntıları da
Kod:
Sub MAIL_GONDER()
    Range("H16") = Range("H16") + 1
    Dim Uygulama As Object
    Dim Yeni_Mail As Object
      
    Yol = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\AAAA"
    Dosya_Adi = Range("H16") & "-" & Range("I16") & " - " & Range("C14") & " " & Range("F6") & ".pdf"

    Range("Print_Area").ExportAsFixedFormat Type:=xlTypePDF, _
    Filename:=Yol & "\" & Dosya_Adi, _
    Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, _
    IgnorePrintAreas:=False, _
    OpenAfterPublish:=False
    
    Set Uygulama = CreateObject("Outlook.Application")
    Set Yeni_Mail = Uygulama.CreateItem(0)

    With Yeni_Mail
        .Subject = " SİPARİŞ FORMU"
        .Body = "Merhaba," & vbCrLf & vbCrLf & "Ekteki sipariş formunu inceleyip geri dönüş yapmanızı rica ederim." & vbCrLf & vbCrLf & "İyi çalışmalar dilerim."
        .Attachments.Add Yol & "\" & Dosya_Adi
        .Save
        .To = Range("c4")
        .CC = " + ; - "
        .Display
    End With
    
    
    Set Uygulama = Nothing
    Set Yeni_Mail = Nothing
End Sub
 
Aşağıdaki kodu kullanabilirsiniz.

Kod:
Sub MAIL_GONDER()
    Dim Uygulama As Object
    Dim Yeni_Mail As Object
  
    Yol = CreateObject("WScript.Shell").SpecialFolders("Desktop")
    Dosya_Adi = "İSKONTO TABLOSU.pdf"

    Range("Print_Area").ExportAsFixedFormat Type:=xlTypePDF, _
    Filename:=Yol & "\" & Dosya_Adi, _
    Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, _
    IgnorePrintAreas:=False, _
    OpenAfterPublish:=False
  
    Set Uygulama = CreateObject("Outlook.Application")
    Set Yeni_Mail = Uygulama.CreateItem(0)

    With Yeni_Mail
        .Subject = "İSKONTO TABLOSU"
        .Body = "Merhaba," & vbCrLf & vbCrLf & "Ekteki tabloyu inceleyip mutabakat için geri dönüş yapmanızı rica ederim." & vbCrLf & vbCrLf & "İyi çalışmalar dilerim."
        .Attachments.Add Yol & "\" & Dosya_Adi
        .Save
        .To = "mail kime gidecekse adresini buraya yazınız."
        .Display
    End With
  
    Set Uygulama = Nothing
    Set Yeni_Mail = Nothing
End Sub

@Korhan Ayhan hocam, bu kodları uyarlamamda yardımcı olur musunuz? MURAT sayfasını PDF yapacak. O PDF dosyasını G5 hücresindeki adrese yollayacak, o kadar. Ancak çok sayfa olduğu için sayfa kod olması lazım sanırım. Uyarlamaya çalıştım yapamadım. Çok teşekkür ederim.


Ekran görüntüsü 2023-11-23 220759.png
 
@muratgunay48 ,

Kod içinde müdahale edilecek bölümler açıkça görünüyor. Biraz kurcalarsanız rahatlıkla çözebilirsiniz.

Kod içinde sayfa adı belirtilmediği için kodu boş bir modüle ekleyip sayfalarınıza ekleyeceğiniz butonlara tanımlayıp kullanabilirsiniz.

Kod aktif sayfadaki tanımlı olan YAZDIRMA ALANI'nı PDF olarak çevirmektedir. Bu durumda sizin sadece sayfalarınızda göndermek istediğiniz alanı YAZDIRMA ALANI olarak tanımlamanız yeterli olacaktır.

Aşağıdaki bölüme çift tırnaklar dahil metni sildikten sonra hücre adresini ekleyerek mailin gideceği adresi tanımlayabilirsiniz.

.To = "mail kime gidecekse adresini buraya yazınız."
 
@muratgunay48 ,

Kod içinde müdahale edilecek bölümler açıkça görünüyor. Biraz kurcalarsanız rahatlıkla çözebilirsiniz.

Kod içinde sayfa adı belirtilmediği için kodu boş bir modüle ekleyip sayfalarınıza ekleyeceğiniz butonlara tanımlayıp kullanabilirsiniz.

Kod aktif sayfadaki tanımlı olan YAZDIRMA ALANI'nı PDF olarak çevirmektedir. Bu durumda sizin sadece sayfalarınızda göndermek istediğiniz alanı YAZDIRMA ALANI olarak tanımlamanız yeterli olacaktır.

Aşağıdaki bölüme çift tırnaklar dahil metni sildikten sonra hücre adresini ekleyerek mailin gideceği adresi tanımlayabilirsiniz.

.To = "mail kime gidecekse adresini buraya yazınız."

Hocam, inanın çok denedim. MURAT adlı sayfayı gönderecek. 1 sayfa yani (printten baktım A1:I50) onu nasıl yazacağım bulamadım.
Bir de burada AAA. PDF dosyayı sayfa ismi neyse nasıl kaydettirebilirim. Çünkü çok sayfa var.
Bir de böyle bir hata veriyor. Bir bakar mısınız size zahmet.

Ekran görüntüsü 2023-11-24 170736.png
 
Son düzenleme:
Alttaki satır aktif sayfadaki yazdırma alanını ifade eder. İşin bu kısmını makro kaydet kodlarıyla elde edebileceğiniz düşünüyorum.

Range("Print_Area")

Biraz daha kurcalarsanız çözersiniz.
 
Alttaki satır aktif sayfadaki yazdırma alanını ifade eder. İşin bu kısmını makro kaydet kodlarıyla elde edebileceğiniz düşünüyorum.

Range("Print_Area")

Biraz daha kurcalarsanız çözersiniz.

Hocam, PDF olarak yapamadım. Şöyle bir şey yapmaya çalıştım. Ancak şöyle bir sorun çıkıyor. Sayfayı çoğaltıp ismini değiştirdiğim zaman, yine bu sayfayı atıyor. Çünkü aktif sayfayı yapamadım. Yardımcı olur musunuz?


Kod:
Private Sub CommandButton1_Click()
Dim Sayfa As Worksheet
    Dim Alan As Range
    Dim daralan As Range

    If Cells(2, 9) = "" Then GoTo HATA

    On Error GoTo HATA

    With Application
        .ScreenUpdating = False
        .EnableEvents = False
    End With

    saydir = WorksheetFunction.CountIf(Range("A:A"), "<>") + 1
    DinamikAlan = "A1:G100" & saydir
    Set Alan = Worksheets("MURAT").Range(DinamikAlan)
   
    Set Sayfa = ActiveSheet

    With Alan

        .Parent.Select
        Set daralan = ActiveCell

        .Select
        ActiveWorkbook.EnvelopeVisible = True
        With .Parent.MailEnvelope

            .Introduction = "Merhaba"

            With .Item
                .to = Cells(2, 9)
                .CC = Cells(3, 9)
                .Subject = Cells(1, 9)
                .bcc = "muratgunay48@hotmail.com" 'buraya kullandığınız outlook adresi yazılacak.
                .Send
            End With

        End With

        daralan.Select
    End With
   
    Sayfa.Select

HATA:
    With Application
        .ScreenUpdating = True
        .EnableEvents = True
    End With
 
End Sub

aktifsayfa.png

Önce PDF'e çevir yoluyla gitsem dedim. Sayfayı masaüstüne kaydetme kısmına kadar geldim. Hani adım adım ilerlemek. Belki yardımınızla daha kolay olur diye.

Private Sub CommandButton2_Click()
ChDir "C:\Users\murat\OneDrive\Masaüstü\MÜŞTERİLER"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Users\murat\OneDrive\Masaüstü\MÜŞTERİLER\" & ActiveSheet.Name & ".pdf" _
, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=False
End Sub

Şimdi bu dosyayı. Ek olarak ekleyip. Mail atmak kaldı.
 
Son düzenleme:
#2 nolu mesajda gayet açık bir örnek var. Onu son kodunuza uyarlayabilirsiniz.
 
Yorulmuyorum...

Aksine siz öğrenin diye çabalıyorum...

Öğrenmek için çaba sarf etmelisiniz..
 
Yorulmuyorum...

Aksine siz öğrenin diye çabalıyorum...
Öğrenmek için çaba sarf etmelisiniz..

Çok teşekkür ederim hocam, her ne biliyorsam bu forumun özellikle sizin hakkınız çok. Ne demiş Hz. Ali "Bana bir harf öğretenin kırk yıl kölesi olurum"
Set Alan = Worksheets("MURAT").Range(DinamikAlan)

Set Alan = Activesheets.Range(DinamikAlan)

""" içine alıyorum olmuyor. ( ) içine alıyorum olmuyor. Nesi yanlış MURAT olmayacak, Activesheet olacak ama.
 
Bu forumun bırakın harf öğretmeyi kitap yazacak bilgi barındırdığını düşünüyorum.

Sizlerden beklentimiz ise bu kitabı açıp okumanızdır..

ExportAsFixedFormat ifadesini yazarak arama yaparsanız ne demek istediğimi daha net anlayacağınızı düşünüyorum.
 
Bu forumun bırakın harf öğretmeyi kitap yazacak bilgi barındırdığını düşünüyorum.

Sizlerden beklentimiz ise bu kitabı açıp okumanızdır..

ExportAsFixedFormat ifadesini yazarak arama yaparsanız ne demek istediğimi daha net anlayacağınızı düşünüyorum.
Hemen yarın bakacağım hocam. Teşekkür ederim.
 
Geri
Üst