Excel 如何在outlook中禁用电子邮件创建屏幕显示?
下面的代码显示每次运行outlook时outlook中的电子邮件创建屏幕。我尝试从第二个函数中删除.display,但它会导致运行时错误。 我不熟悉VBA宏,请告知如何隐藏正在触发的每个新电子邮件的电子邮件创建屏幕。先谢谢你Excel 如何在outlook中禁用电子邮件创建屏幕显示?,excel,vba,Excel,Vba,下面的代码显示每次运行outlook时outlook中的电子邮件创建屏幕。我尝试从第二个函数中删除.display,但它会导致运行时错误。 我不熟悉VBA宏,请告知如何隐藏正在触发的每个新电子邮件的电子邮件创建屏幕。先谢谢你 Public Sub loopCheck() Dim NumRows As Integer Dim eID As String Dim eName As String Dim eEmail As String Dim supportGroup As String Dim m
Public Sub loopCheck()
Dim NumRows As Integer
Dim eID As String
Dim eName As String
Dim eEmail As String
Dim supportGroup As String
Dim managerEmail As String
Dim acName As String
Dim x As Integer
Application.ScreenUpdating = False
NumRows = Worksheets("Data").Range("A5", Range("A5").End(xlDown)).Rows.Count ' Set numrows = number of rows of data.
Worksheets("Data").Range("A5").Select ' Select first record.
For x = 1 To NumRows ' Establish "For" loop to loop "numrows" number of times.
eID = Worksheets("Data").Range("A" & x + 4).Value
eName = Worksheets("Data").Range("B" & x + 4).Value
eEmail = Worksheets("Data").Range("C" & x + 4).Value
supportGroup = Worksheets("Data").Range("F" & x + 4).Value
managerEmail = Worksheets("Data").Range("G" & x + 4).Value
acName = Worksheets("Data").Range("I" & x + 4).Value
'Prepare table to be sent locally.
Worksheets("Data").Range("AA5").Value = eID
Worksheets("Data").Range("AB5").Value = eName
Worksheets("Data").Range("AC5").Value = eEmail
Worksheets("Data").Range("AF5").Value = supportGroup
managerEmail = managerEmail + ";" + Worksheets("Data").Range("AA1").Value
'Call Emails function.
Call Emails(eEmail, managerEmail)
ActiveCell.Offset(1, 0).Select
Next
Application.ScreenUpdating = True
End Sub
Public Sub Emails(y As String, z As String)
Dim outlook As Object
Dim newEmail As Object
Dim xInspect As Object
Dim pageEditor As Object
Dim a As String
Dim b As String
a = y
b = z
Set outlook = CreateObject("Outlook.Application")
Set newEmail = outlook.CreateItem(0)
With newEmail
.To = a
.CC = b
.BCC = ""
.Subject = "test loop"
.Body = ""
.display
Set xInspect = newEmail.GetInspector
Set pageEditor = xInspect.WordEditor
Worksheets("Data").Range("AA4:AF5").Copy
pageEditor.Application.Selection.Start = Len(.Body)
pageEditor.Application.Selection.End = pageEditor.Application.Selection.Start
pageEditor.Application.Selection.PasteAndFormat (wdFormatPlainText)
.display
.send
Set pageEditor = Nothing
Set xInspect = Nothing
End With
Set newEmail = Nothing
Set outlook = Nothing
End Sub
您的电子邮件子系统中有两个.display实例。如果第一个实例被抑制,它将锁定编辑器,并且不允许程序运行。第二个实例可以被注释掉,发送就足够了。仍然会在屏幕上显示第一个实例。为了完全禁用电子邮件创建屏幕显示,请参考涵盖所有类型发送电子邮件的程序,而不显示电子邮件创建屏幕。方法是在HTML正文中嵌入图像或图表的首选方法
您采用的代码类似于。请参阅Dmitry Streblechenko回答中的开场白”-- 您还应该使用MailItem.GetInspector而不是 Application.ActiveInspector,因为消息尚未显示 因此,如果您想抑制电子邮件创建屏幕显示,请采用前面建议的其他方法 此外,尤金·阿斯塔菲耶夫在回答一个问题时也提到了这一点 这是Outlook中的一个已知问题。必须先调用Display方法才能使检查器可见 否则就不行了
我认为您不能通过调用此方法来抑制电子邮件创建屏幕显示。据我所知,使用
.GetInspector'而不是.display`在子子电子邮件中显示(y为字符串,z为字符串)
应该减少屏幕显示的数量。您的电子邮件子系统中有两个实例。display
。如果第一个实例被抑制,它将锁定编辑器,不允许程序运行。第二个实例可以被注释掉,。send
足以让程序工作。第一个实例仍将显示在scr上een.为了完全禁用电子邮件创建屏幕显示,请参考创建用于粘贴电子邮件的临时工作表并随后被程序删除的程序,但程序在没有电子邮件创建屏幕的情况下运行。您采用的代码与SO问题类似。请参阅Dmi回答中的开场白试试Streblechenko”--您还应该使用MailItem.GetInspector而不是Application.ActiveInspector,因为消息尚未显示。因此,如果您想抑制电子邮件创建屏幕显示,请采用前面建议的其他方法。