mail body kısmına logo ekleme

burcin_end_muh

Altın Üye
Katılım
14 Ocak 2013
Mesajlar
161
Excel Vers. ve Dili
Türkçe 2013
Altın Üyelik Bitiş Tarihi
05-01-2028
Merhabalar,
belli bir aralığı rng olarak atayıp mail bodysine ekliyorum ama body kısmına logo da eklemek istiyorum.
logo dosya içinde de olabilir masaüstünde bir klasörede de olabilir.

Zaman ayırdığınız için şimdiden teşekkür ederim.

kullandığım kodlar

Sub tek_mail()
'For Tips see: http://www.rondebruin.nl/win/winmail/Outlook/tips.htm
'Don't forget to copy the function RangetoHTML in the module.
'Working in Excel 2000-2016
Dim rng As Range
Dim OutApp As Object
Dim OutMail As Outlook.MailItem
Dim i, k As Integer
Dim ozet, logoyol As String
Dim User As String

User = Environ("Username")

k = Sheets("Tablo").Range("j1").Value
Set rng = Nothing


On Error Resume Next
'Only the visible cells in the selection
'Set rng = Selection.SpecialCells(xlCellTypeVisible)
'You can also use a fixed range if you want
Set rng = Sheets("Tablo").Range("b2:f35").SpecialCells(xlCellTypeVisible)


On Error GoTo 0

If rng 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(olMailItem)

On Error Resume Next
Dim cell As Range
Dim strto As String
For Each cell In ThisWorkbook.Sheets("mail").Range("c1:c24")
If cell.Value Like "?*@?*.?*" Then
strto = strto & cell.Value & ";"
End If
Next cell
If Len(strto) > 0 Then strto = Left(strto, Len(strto) - 1)
With OutMail
.To = ThisWorkbook.Sheets("Tablo").Range("j2").Value
.CC = strto
.BCC = ""
.Subject = ThisWorkbook.Sheets("Tablo").Range("j3").Value
.HTMLBody = RangetoHTML(rng)
.SendUsingAccount = OutApp.Session.Accounts.Item(k)
.Display
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)
' Changed by Ron de Bruin 28-Oct-2006
' Working in Office 2000-2016
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

'Publish the sheet to a htm file
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

'Read all data from the htm file into RangetoHTML
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=")

'Close TempWB
TempWB.Close savechanges:=False

'Delete the htm file we used in this function
Kill TempFile

Set ts = Nothing
Set fso = Nothing
Set TempWB = Nothing
End Function
 

burcin_end_muh

Altın Üye
Katılım
14 Ocak 2013
Mesajlar
161
Excel Vers. ve Dili
Türkçe 2013
Altın Üyelik Bitiş Tarihi
05-01-2028
Şöyle bir durum oluştu; geçici oluşturduğu excelin içine jpg olan logoyu ekledim. ancak bunu mail body kısmına geçirirken "resim şuan görüntülenemiyor." uyarısı veriyor.

ActiveSheet.Pictures.Insert("C:\Users\burcinyumusak\Desktop\işedavet\kga_logo.jpg").Select
bu kod ile ekliyor görüntülüyor ama mail body kısmına eklemiyor.

İmzaya da ekleyebiliriz logo olan jpg dosyasını.
her türlü çözüm olur yani :(
 

bmutlu966

Altın Üye
Katılım
26 Ocak 2006
Mesajlar
756
Excel Vers. ve Dili
Office 365 İngilizce 64 Bit
Altın Üyelik Bitiş Tarihi
31-01-2025
klasor="C:\\Deneme\"
dosya="logo.jpg"

Resminizin yolunu yukarıdaki örnekteki gibi tanımlayıp .HTMLBody = RangetoHTML(rng) satırından sonra aşağıdaki kod ile mail gövdesine çekebilirsiniz.

.Attachments.Add klasor & dosya
 

burcin_end_muh

Altın Üye
Katılım
14 Ocak 2013
Mesajlar
161
Excel Vers. ve Dili
Türkçe 2013
Altın Üyelik Bitiş Tarihi
05-01-2028
klasor="C:\\Deneme\"
dosya="logo.jpg"

Resminizin yolunu yukarıdaki örnekteki gibi tanımlayıp .HTMLBody = RangetoHTML(rng) satırından sonra aşağıdaki kod ile mail gövdesine çekebilirsiniz.

.Attachments.Add klasor & dosya

.Attachments.Add klasor & dosya böyle ek olarak eklenmez mi?
 

bmutlu966

Altın Üye
Katılım
26 Ocak 2006
Mesajlar
756
Excel Vers. ve Dili
Office 365 İngilizce 64 Bit
Altın Üyelik Bitiş Tarihi
31-01-2025
Aşağıdaki kodu kendinize göre uyarlarsınız.

Kod:
Sub Resim_ekle()

Klasor = "C:\Deneme\"
Resim = "logo.jpg"
    
    With CreateObject("Outlook.Application").CreateItem(0)
        .Attachments.Add Klasor & Resim
        .HTMLBody = "<html><p>Resim</p>" & _
        "<img src=cid:" & Replace(Resim, " ", "%20") & _
        "</html>"
        .Display
    End With
End Sub
 

burcin_end_muh

Altın Üye
Katılım
14 Ocak 2013
Mesajlar
161
Excel Vers. ve Dili
Türkçe 2013
Altın Üyelik Bitiş Tarihi
05-01-2028
Aşağıdaki kodu kendinize göre uyarlarsınız.

Kod:
Sub Resim_ekle()

Klasor = "C:\Deneme\"
Resim = "logo.jpg"
   
    With CreateObject("Outlook.Application").CreateItem(0)
        .Attachments.Add Klasor & Resim
        .HTMLBody = "<html><p>Resim</p>" & _
        "<img src=cid:" & Replace(Resim, " ", "%20") & _
        "</html>"
        .Display
    End With
End Sub

Çok teşekkürler zamanınızı ayırdığınız için ancak logo ekleniyor ama bu sefer de daha önce yazdığım mail bodysi (yazı) gelmiyor.
 

bmutlu966

Altın Üye
Katılım
26 Ocak 2006
Mesajlar
756
Excel Vers. ve Dili
Office 365 İngilizce 64 Bit
Altın Üyelik Bitiş Tarihi
31-01-2025
En başta resminizin yerini aşğıdaki şekilde tanımlayıp .HTMLBody kodunu da aşağıdaki şekilde değiştirip dener misiniz. Eğer olmuyorsa örnek bir dosya paylaşmanızda yarar var.

Kod:
Dim rng As Range
Dim OutApp As Object
Dim OutMail As Outlook.MailItem
Dim i, k As Integer
Dim ozet, logoyol As String
Dim User As String

Klasor = "C:\Deneme\"
Resim = "logo.jpg"
.
.
.
.HTMLBody = RangetoHTML(rng) & "<html><p>Resim</p>" & _
        "<img src=cid:" & Replace(Resim, " ", "%20") & _
        "</html>"
 
Üst