使用vba撰写时更改Outlook回复/转发邮件
当回复、转发(或者基本上对邮件进行任何形式的回复)时,我想更改邮件的正文。我知道如何在“发送”事件中执行此操作,但我宁愿在编写之前执行此操作,以便看到更改。 使用发送:使用vba撰写时更改Outlook回复/转发邮件,vba,outlook,Vba,Outlook,当回复、转发(或者基本上对邮件进行任何形式的回复)时,我想更改邮件的正文。我知道如何在“发送”事件中执行此操作,但我宁愿在编写之前执行此操作,以便看到更改。 使用发送: 私有子应用程序\u ItemSend(ByVal项作为对象,取消作为布尔值) 出错时继续下一步 设置RegX=CreateObject(“VBScript.RegExp”) 使用RegX .pattern=“[我要在电子邮件正文中修复的正则表达式]” .Global=True .MultiLine=True .IgnoreCas
私有子应用程序\u ItemSend(ByVal项作为对象,取消作为布尔值)
出错时继续下一步
设置RegX=CreateObject(“VBScript.RegExp”)
使用RegX
.pattern=“[我要在电子邮件正文中修复的正则表达式]”
.Global=True
.MultiLine=True
.IgnoreCase=False
以
选择Case Item.BodyFormat
案例格式HTML
Item.HTMLBody=RegX.Replace(Item.HTMLBody,“”)
其他情况
'是否指定了olFormatPlain、olFormatRichText、lFormatUnspecified?
Item.Body=RegX.Replace(Item.Body,“”)
结束选择
端接头
我找到了一种在外部窗口(Inspectors.NewInspector)中触发撰写事件的方法,但很难找到一种透明的方法,其中包括在Outlook 2016的内联编辑器中撰写的回复(Explorer.InlineResponse)
以下是适用于“弹出”模式windows响应的方法:
将myOlApp设置为新Outlook.Application
以事件myolinspects作为Outlook的公共事件。检查员
公共子处理器初始化\u处理程序()
设置肌球蛋白胸肌=肌球蛋白检查仪
端接头
私有子myolinspects_NewInspector(ByVal Inspector作为Outlook.Inspector)
Set Item=Inspector.CurrentItem
设置RegX=CreateObject(“VBScript.RegExp”)
使用RegX
.pattern=“[我要在电子邮件正文中修复的正则表达式]”
.Global=True
.MultiLine=True
.IgnoreCase=False
以
选择Case Item.BodyFormat
案例格式HTML
Item.HTMLBody=RegX.Replace(Item.HTMLBody,“”)
其他情况
'是否指定了olFormatPlain、olFormatRichText、lFormatUnspecified?
Item.Body=RegX.Replace(Item.Body“”)“”
结束选择
端接头
如何在内联编辑器中执行类似的操作,最好使用透明的单个函数。对于内联回复,您可以尝试使用Explorer.inlineponse事件-该项将作为参数传递 这方面的例子如下:
Dim myOlApp As New Outlook.Application
Public WithEvents myOlExplorer As Outlook.Explorer
Public Sub Initialize_handler()
Set myOlExplorer = myOlApp.ActiveExplorer
End Sub
Private Sub myOlExplorer_InlineResponse(ByVal Item As Object)
' do things to the Item here in the inline response
End Sub