Excel makro ile mail gönderimi sorunu

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Katılım
26 Mayıs 2013
Mesajlar
17
Excel Vers. ve Dili
2010
Arkadaşlar Merhaba,

Ekli excel ile N sutünundaki kritere göre MAİL sayfasındaki tanımlı adreslere mail gönderimi yapıyorum.Ancak iki sorunum mevcut olup beni yönlendirirseniz çok sevinirim.

1.Makro içinde mail gönderimi yapan kodu KodTalep adı altındaki başka bir fonksiyon içinde topladığımda gönderim yapamıyorum.

2.Mail gövdesindeki yazıları nasıl renklendirip kalın yapabilir?

Yapacağınız yardımlar için şimdiden çok teşekkür ederim.


*****************************************************

Kod:
Private Sub CommandButton1_Click()
    Dim S1 As Worksheet
    Dim syf As Worksheet
    
    
    For Each syf In Worksheets
    On Error Resume Next
       If syf.FilterMode = False Then
    Else
        syf.ShowAllData
    End If
    Next syf
        Set Sh = ActiveSheet
        Sh.Range("F2:N2").AutoFilter Field:=9, Criteria1:="OK"
    Set S1 = Sheets("MAIL")
    S1.Columns("A:A").ClearContents
    Columns("J:J").Copy
    S1.Columns(1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    S1.Range("$A$1:$A$65536").RemoveDuplicates Columns:=1, Header:=xlNo
    Range("A1").Select
    Call Mail
End Sub

*****************************************************

Sub Mail()
'    Dim rng As Range
'    Dim OutApp As Object
'    Dim OutMail As Object
    Dim Sh As Worksheet
    
    
    Set Sh = ActiveSheet
    Set S1 = Sheets("MAIL")
    
    For i = 3 To [MAIL!A65536].End(3).Row
    
     Sh.Range("F2:N2").AutoFilter Field:=5, Criteria1:=S1.Cells(i, "A").Text
        Call KodTalep
        
'        With Application
'        .EnableEvents = False
'        .ScreenUpdating = False
'    End With
'    Set rng = Nothing
'    Set rng = ActiveSheet.UsedRange
'    Set OutApp = CreateObject("Outlook.Application")
'    Set OutMail = OutApp.CreateItem(0)
'     strbody = "BU YAZILAR NASIL KALIN VE " & vbNewLine & vbNewLine & _
'    "RENKLİ OLABİLİR." & vbNewLine & _
'    "" & vbNewLine & _
'    "" & vbNewLine & _
'    ""
'    On Error Resume Next
'    With OutMail
'        .To = S1.Cells(i, "B")
'        .CC = ""
'        .BCC = ""
'        .Subject = "MAİLİN KONUSUNU BU KISMA YAZABİLİRSİNİZ "
'        .HTMLBody = strbody & RangetoHTML(rng)
'        .Send
'    End With
'    On Error GoTo 0
'    With Application
'        .EnableEvents = True
'        .ScreenUpdating = True
'    End With
'    Set OutMail = Nothing
'    Set OutApp = Nothing
    Next
    
End Sub
*********************************************
Sub KodTalep()

    Dim rng As Range
    Dim OutApp As Object
    Dim OutMail As Object
    Dim Sh As Worksheet
      
    Set Sh = ActiveSheet
    Set S1 = Sheets("MAIL")
             
        With Application
        .EnableEvents = False
        .ScreenUpdating = False
    End With
    Set rng = Nothing
    Set rng = ActiveSheet.UsedRange
    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)
      strbody = "Merhaba, " & vbNewLine & vbNewLine & _
    "Aşağıdaki müşteri DBS kapsamında sizinle DBS kapsamında çalışmak istemektedir" & vbNewLine & _
    "Bu kapsamda kod bilgisi iletildiği taktirde müşteri sisteme tanımlanacaktır." & vbNewLine & _
    "Saygılarımla," & vbNewLine & _
    ""
    On Error Resume Next
    With OutMail
        .To = S1.Cells(i, "B")
        .CC = ""
        .BCC = ""
        .Subject = "MAİLİN KONUSUNU BU KISMA YAZABİLİRSİNİZ "
        .HTMLBody = strbody & RangetoHTML(rng)
        .Send
    End With
    On Error GoTo 0
    With Application
        .EnableEvents = True
        .ScreenUpdating = True
    End With
    Set OutMail = Nothing
    Set OutApp = Nothing
    
End Sub

***************************************************

Function RangetoHTML(rng As Range)
    Dim fso As Object
    Dim ts As Object
    Dim TempFile As String
    Dim TempWB As Workbook
    TempFile = Environ$("temp") & "/" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm"
    rng.Copy
    Set TempWB = Workbooks.Add(1)
    With TempWB.Sheets(1)
        .Cells(1).PasteSpecial Paste:=8
        .Cells(1).PasteSpecial xlPasteValues, , False, False
        .Cells(1).PasteSpecial xlPasteFormats, , False, False
        .Cells(1).Select
        Application.CutCopyMode = False
        On Error Resume Next
        .DrawingObjects.Visible = True
        .DrawingObjects.Delete
        On Error GoTo 0
    End With
    With TempWB.PublishObjects.Add( _
         SourceType:=xlSourceRange, _
         Filename:=TempFile, _
         Sheet:=TempWB.Sheets(1).Name, _
         Source:=TempWB.Sheets(1).UsedRange.Address, _
         HtmlType:=xlHtmlStatic)
        .Publish (True)
    End With
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set ts = fso.GetFile(TempFile).OpenAsTextStream(1, -2)
    RangetoHTML = ts.ReadAll
    ts.Close
    RangetoHTML = Replace(RangetoHTML, "align=center x:publishsource=", _
                          "align=left x:publishsource=")
    TempWB.Close SaveChanges:=False
    Kill TempFile
    Set ts = Nothing
    Set fso = Nothing
    Set TempWB = Nothing
End Function


http://s4.dosya.tc/server/dBWx3X/Deneme2.rar.html
 
Son düzenleme:
Katılım
26 Mayıs 2013
Mesajlar
17
Excel Vers. ve Dili
2010
Sorun Hakkında

Arkadaşlar yardım edebilecek kimse yok mu bu konuda..
 

Korhan Ayhan

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

Mail gövdesindeki yazıları aşağıdaki gibi biçimlendirebilirsiniz. En son satır biçimlendirme işlemini yapmaktadır.

Kod:
    strbody = "Merhaba, " & vbNewLine & vbNewLine & _
    "Aşağıdaki müşteri DBS kapsamında sizinle DBS kapsamında çalışmak istemektedir" & vbNewLine & _
    "Bu kapsamda kod bilgisi iletildiği taktirde müşteri sisteme tanımlanacaktır." & vbNewLine & _
    "Saygılarımla," & vbNewLine & _
    ""
    
    strbody = "<p><font face=""Comic Sans MS"" size=""3"" color=""red""><b>" & strbody & "</b></font></p><p></p>"
Sayfadaki buton altında Call Mail ifadesiyle Mail isimli makroyu çağırmışsınız. Eğer siz KodTalep makrosunu çağırmak istiyorsanız Call KodTalep olarak revize etmelisiniz.
 
Katılım
26 Mayıs 2013
Mesajlar
17
Excel Vers. ve Dili
2010
Öncelikle verdiğiniz yanıt için teşekkür ederim. Makro içinde daha sonradan belli kriterlere göre mail yapısını değiştireceğim için KodTalebi mail içinden çağırdım. Mail altından açıklama satırlarını lakdırdığımda gönderim yapılıyor ama mail içimden KodTalebi çağırınca gönderim olmuyor
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,264
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Nasıl kullanmak istediğinizi bilmediğim için anladığım şekilde cevap verdim.

Tam çözüm için ne yapmak istediğinizi bize de açıkça anlatmalısınız.
 
Katılım
26 Mayıs 2013
Mesajlar
17
Excel Vers. ve Dili
2010
Hocam Merhaba,

Eksik bilgi verdiğim için kusura bakma. Yapmak istediği N sutünunda OK yazan hücrelerdeki J sutünundaki firmalara KOD TALEP veya İPTAL TALEP kriterlerine göre iki ayrı format yapısında mail gönderebilmektir.Mevcut exceli aşağıda ekliyorum.Yardımcı olursanız sevinirim.

http://s5.dosya.tc/server/cS0cVy/Deneme1.rar.html

 
Katılım
26 Mayıs 2013
Mesajlar
17
Excel Vers. ve Dili
2010
Korhan Hocam Merhaba

Biraz inceledikten sonra verdiğiniz kısım ile bayağı bir düzenleme yaptım.Maile imzamıda ekleyebildim.

Sadece birtek önceki mesajda yazdığım sorunum kaldı.Yönlendirirseniz sevinirim.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,264
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Maillerin formatı nasıl olacak?

Yani KOD TALEP seçeneğinde neler yazılacak? İPTAL TALEP seçeneğinde neler yazılacak?
 
Katılım
26 Mayıs 2013
Mesajlar
17
Excel Vers. ve Dili
2010
Hocam Merhaba
Diğer konuları çözdüm.daha önce verdiğiniz mail gövdesini yazı formatı için kullanılan kod tüm yazıyı değiştiriyor. Mail gövdesinde yazının bir kısmını rengini değiştirebilirmiyim. Örneğin tüm text kırmızıyken kod bilgisi sadece kod bilgisi kısmını mavi yapabilirmiyim.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,264
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Mailinizin Body bölümünde farklı renkler kullanmak için aşağıdaki kodu kullanabilirsiniz.

Kod:
    strbody = strbody & "<p><font face=""Calibri"" size=""3"" color=""red""><b> Merhaba, </b></font></p><p></p>"
    strbody = strbody & "<p><font face=""Calibri"" size=""3"" color=""blue""><i> MESAJINIZI BU BÖLÜME YAZINIZ </i></font></p>"
    strbody = strbody & "<p><font face=""Calibri"" size=""3"" color=""green""><u> MURAT KIZILAY </u></font></p>"
 
Katılım
26 Mayıs 2013
Mesajlar
17
Excel Vers. ve Dili
2010
Hocam bu konuyla ilgili son bir sorum olacak. Satırdaki bir kelime farklı renk yapılabilir mi? "Bu bölüme yazınız" cümlesi kırmızıykey sadece bölüme kelimesi mavi yapılabilir mi? Saygılarımla
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,264
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Aşağıdaki gibi deneyiniz.

Kod:
    strbody = strbody & "<p><font face=""Calibri"" size=""3"" color=""red""><b> Merhaba, </b></font></p><p></p>"
    strbody = strbody & "<p><font face=""Calibri"" size=""3"" color=""red""><i> MESAJINIZI BU <font color=""blue""> BÖLÜME </font><font color=""red""> YAZINIZ </i></font></p>"
    strbody = strbody & "<p><font face=""Calibri"" size=""3"" color=""green""><u> MURAT KIZILAY </u></font></p>"
 
Katılım
26 Mayıs 2013
Mesajlar
17
Excel Vers. ve Dili
2010
Hocam bilginize sağlık.Çok teşekkür ederim.En son halini paylaşım için yükleyeceğim.
 
Katılım
26 Mayıs 2013
Mesajlar
17
Excel Vers. ve Dili
2010
Korhan hoam ve arkadaşlar merhaba
Yukarıda mail gövdesine satır bazında fırmatlamayı göstermiştiniz. Şimdiki sorunum inputbox tan aldığım bir cümleyi mail gövdesine yazabiliyorum ancak bu yazının formatını nasıl değiştirebilirim. Örneğin yukarıdaki örnekte Sabit MURAT KIZILAY yerine isim değişkeninden aldığım veriyi kırmızı renkte ve calibri olarak nasıl nasıl mail gövdesine yazabilirim.
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üst