Outlook Makro

Katılım
1 Kasım 2016
Mesajlar
11
Excel Vers. ve Dili
2020
Altın Üyelik Bitiş Tarihi
20-01-2022
Merhaba Ustalar;

Aşağıdaki kodlar ile makro ile otomatik rapor atıyorum. Makro kodları sayesinde mail eklerini ve resimlerini otomatik kopyalıyor.
Ancak aşağıdaki resimde görüldüğü gibi resimler X olarak cıkıyor html bölümüne ekleyemediği için EK' olarak ekliyor.
Outlook365 geçtikten sonra böyle oldu ilgili sorun office2013'da yok ancak şirket exchange tabanlı mail desteklediği için 2016 üstü şart 2016'yıda denedim sorun düzelmedi unilever uzantısı hariç diğer kuruluş dışı attığım tüm kişilere mail böyle gitmektedir. Makro kodlarını güncelleyerek çözüm üretebilirmiyiz acaba
Teşekkürler.




Kod:
Sub Mail_Selection_Range_Outlook_Body(mailTo As String, fPath As String, rng As Range, rng2 As Range, rng3 As Range, rng4 As Range, rng5 As Range, reportName As String)

Dim OutApp As Object
Dim OutMail As Object

If rng Is Nothing And rng2 Is Nothing And rng3 Is Nothing And rng4 Is Nothing And rng5 Is Nothing Then
    MsgBox "The selection is not a range or the sheet is protected. " & _
           vbNewLine & "Please correct and try again.", vbOKOnly
    Exit Sub
End If

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


Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)


Dim imagePath As String
Dim imagePath2 As String
Dim imagePath3 As String
Dim imagePath4 As String
Dim imagePath5 As String

imagePath2 = ActiveWorkbook.Path & "\özet2.jpg"
imagePath = ActiveWorkbook.Path & "\özet1.jpg"
imagePath3 = ActiveWorkbook.Path & "\özet3.jpg"
imagePath4 = ActiveWorkbook.Path & "\özet4.jpg"
imagePath5 = ActiveWorkbook.Path & "\özet5.jpg"

With OutMail
    .To = mailTo
    .cc = ""
    .BCC = ""
    .sentonbehalfofname = "alg.eryaman-ankara@unilever.com"
    .Subject = reportName

    .Attachments.Add (fPath)
 
    .Attachments.Add (imagePath)
    .Attachments.Add (imagePath2)
    .Attachments.Add (imagePath3)
    .Attachments.Add (imagePath4)
    .Attachments.Add (imagePath5)
    
    .htmlbody = RangetoHTML(rng, rng2, rng3, rng4, rng5) & "<br><br><br>""<b>ÖZET</b><br />" & "<img src='" & "özet1.jpg" & "'>" & "<br><br><br>""<b>ÖZET2</b><br />" & "<img src='" & "özet2.jpg" & "'>" & "<br><br><br>""<b>ÖZET3</b><br />" & "<img src='" & "özet3.jpg" & "'>" & "<br><br><br>""<b>ÖZET4</b><br />" & "<img src='" & "özet4.jpg" & "'>" & "<br><br><br>""<b>ÖZET5</b><br />" & "<img src='" & "özet5.jpg" & "'>"
    
    

    .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, rng2 As Range, rng3 As Range, rng4 As Range, rng5 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"

    'Copy the range and create a new workbook to past the data in
    
    
    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
 
Katılım
24 Nisan 2005
Mesajlar
3,671
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
Bu kod'a göre uyarlayıp dener misiniz?
Özellikle önce display sonra send olmalı. Display i iptal etmeyin.
Yani hatırladığım kadarı ile :)


Kod:
Sub mail_gonder()
    On Error GoTo son
    Set appOutlook = CreateObject("outlook.application")
    Set Message = appOutlook.CreateItem(olMailItem)
      
    With Message
        .Subject ="Mail konusu"
        .Attachments.Add (imagePath), olByValue, 0
        .To = mailstr
        .cc = mailcc
        .Display
        .Send
    End With
    Exit Sub
son:
   On Error GoTo 0
End Sub
 
Üst