文档库

最新最全的文档下载
当前位置:文档库 > VBA在EXCEL 和outlook 中编程实现自动发mail功能 不会弹出 Outlook 的安全提示框

VBA在EXCEL 和outlook 中编程实现自动发mail功能 不会弹出 Outlook 的安全提示框

BA在EXCEL 和outlook 中编程实现自动发mail功能 不会弹出 Outlook 的安全提示框
在电脑中设定任务计划,定时打开存有代码的EXCEL,此程序可实现定时自动发MAIL功能,
可同时发给多人或群组,邮件可带附件,邮件内容来自EXCEL表格中,将要发送的excel 内容区域命名为 LIST,
无论什么版本的OUTLOOK都无需插件或设置都不会弹出以下窗口:


'以下代码贴于outlook的 ThisOutlookSession模块中(记得在outlook中引用EXCEL)

Option Explicit

Sub send_mail(w, zt, PAT, strHTMLBody As String)


Set mai = Application.CreateItem(0)

With mai

.To = w

.subject = zt

mai.FlagIcon = olRedFlagIcon

mai.FlagDueBy = Date

.Attachments.Add PAT

.HTMLBody = strHTMLBody

.Send

End With

Set mai = Nothing

End Sub





'以下代码贴于EXCEL的 thisworkbook模块中(记得在excel中引用OUTLOOK)

Option Explicit


private Sub Workbook_Open()
   sendmail
End Sub

Sub sendmail()

Dim OutApp As Object

Set OutApp = CreateObject("Outlook.Application")

OutApp.Session.Logon

Dim rag As Range

Dim note As String

Dim subject As String

Dim who As String

Dim Attachment As String

Dim strHTMLBody As String

Set rag = Range("list")

subject = "Rs Defect Chart"

note = "alarm:"

who = "" '邮件接受者,多个用户可使用冒号隔开

Attachment = "D:ATaw.XLS"

strHTMLBody = "

Dear all


" & note & "" + RangetoHTML(rag)

OutApp.send_mail who, subject, Attachment, strHTMLBody

End Sub

Function RangetoHTML(rng As Range)

' Changed by Ron de Bruin 28-Oct-2006

' Working in Office 2000-2007

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

.DlvrawingObjects.Visible = True

.DlvrawingObjects.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