Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用vba撰写时更改Outlook回复/转发邮件_Vba_Outlook - Fatal编程技术网

使用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