Merhaba aşağıdaki kodları çoğaltarak birden fazla sayfayı farklı kişilere mail göndermek istiyorum. İlk sayfada kod sorunsuz çalışıyor sonraki sayfalarda hata veriyor ya da boş gönderiyor.
Sheets(1) diğer sayfalarda değiştiriyorum. Ayrıca Call Gizle ve Call Goster makroları ile boş satırlar gizleniyor.
Sub Mail()
Call Excel_ile_Mail_Gönderme1
Call Excel_ile_Mail_Gönderme2
Call Excel_ile_Mail_Gönderme3
End Sub
Sub Excel_ile_Mail_Gönderme1()
Dim rng As Range
Dim OutApp As Object
Dim OutMail As Object
With Application
.EnableEvents = False
.ScreenUpdating = False
End With
Set rng = Nothing
Set rng = ActiveSheet.UsedRange
Set rng = Sheets(1).UsedRange
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
On Error Resume Next
With OutMail
.To = Range("J2").Value
.CC = ""
.BCC = ""
.Subject = Range("J3").Value
.HTMLBody = RangetoHTML1(rng)
.Send 'göndermemek için .Display
End With
On Error GoTo 0
With Application
.EnableEvents = True
.ScreenUpdating = True
End With
Set OutMail = Nothing
Set OutApp = Nothing
End Sub
Function RangetoHTML1(rng As Range)
Call Gizle
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
'Sayfayı htm dosyası olarak yayınla
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
'RangetoHTML içine htm dosyası olan tüm verileri oku
Set fso = CreateObject("Scripting.FileSystemObject")
Set ts = fso.GetFile(TempFile).OpenAsTextStream(1, -2)
RangetoHTML1 = ts.readall
ts.Close
RangetoHTML1 = Replace(RangetoHTML1, "align=center xublishsource=", _
"align=left xublishsource=")
'TempWB'yi kapat
TempWB.Close savechanges:=False
'htm dosyası olan bu fonksiyonu sil
Kill TempFile
Set ts = Nothing
Set fso = Nothing
Set TempWB = Nothing
Call Goster
End Function
Sheets(1) diğer sayfalarda değiştiriyorum. Ayrıca Call Gizle ve Call Goster makroları ile boş satırlar gizleniyor.
Sub Mail()
Call Excel_ile_Mail_Gönderme1
Call Excel_ile_Mail_Gönderme2
Call Excel_ile_Mail_Gönderme3
End Sub
Sub Excel_ile_Mail_Gönderme1()
Dim rng As Range
Dim OutApp As Object
Dim OutMail As Object
With Application
.EnableEvents = False
.ScreenUpdating = False
End With
Set rng = Nothing
Set rng = ActiveSheet.UsedRange
Set rng = Sheets(1).UsedRange
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
On Error Resume Next
With OutMail
.To = Range("J2").Value
.CC = ""
.BCC = ""
.Subject = Range("J3").Value
.HTMLBody = RangetoHTML1(rng)
.Send 'göndermemek için .Display
End With
On Error GoTo 0
With Application
.EnableEvents = True
.ScreenUpdating = True
End With
Set OutMail = Nothing
Set OutApp = Nothing
End Sub
Function RangetoHTML1(rng As Range)
Call Gizle
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
'Sayfayı htm dosyası olarak yayınla
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
'RangetoHTML içine htm dosyası olan tüm verileri oku
Set fso = CreateObject("Scripting.FileSystemObject")
Set ts = fso.GetFile(TempFile).OpenAsTextStream(1, -2)
RangetoHTML1 = ts.readall
ts.Close
RangetoHTML1 = Replace(RangetoHTML1, "align=center xublishsource=", _
"align=left xublishsource=")
'TempWB'yi kapat
TempWB.Close savechanges:=False
'htm dosyası olan bu fonksiyonu sil
Kill TempFile
Set ts = Nothing
Set fso = Nothing
Set TempWB = Nothing
Call Goster
End Function