在outlook里,如何用VBA实现点击回复按钮时自动将邮件名写成指定的名称?

在outlook里,如何用VBA实现点击回复按钮时自动将邮件名写成指定的名称?
就是在outlook VBA里,点击回复/全部回复时触发的时间是什么?
请高手帮忙~

★ 第一步:

添加一个类模块并命名为 ReplyHandler,复制以下代码:


Option Explicit

Private WithEvents mItem As MailItem
Public WithEvents myExplorer As Explorer

' #########
' 析构函数.
' #########
Private Sub Class_Terminate()
    If Not (mItem Is Nothing) Then
        Set mItem = Nothing
    End If
    
    If Not (myExplorer Is Nothing) Then
        Set myExplorer = Nothing
    End If
End Sub

' #############################################################
' 事件: 当用户为项目 (父对象的一个实例) 选择 "答复" 动作时发生.
' #############################################################
Private Sub mItem_Reply(ByVal Response As Object, _
                        Cancel As Boolean)
    
    Response.Subject = "[修改邮件主题为指定的名称]"
End Sub

' ##################################################
' 事件: 选择其他或更多 Microsoft Outlook 项目时发生.
' ##################################################
Private Sub myExplorer_SelectionChange()
    Dim mySel As Selection
    
    Set mySel = myExplorer.Selection
    
    ' /* 浏览器窗口中有且只有一个项目被选中. */
    If mySel.Count = 1 Then
        Dim objItem As Object
        
        Set objItem = mySel.Item(1)
        
        ' /* 该选中项目是邮件. */
        If objItem.Class = olMail Then
            ' /* 动态注册邮件的 Reply 事件. */
            Set mItem = objItem
        End If
    End If
    
    Set mySel = Nothing
    Set objItem = Nothing
End Sub

' #####################################
' 强制触发浏览器窗口中的选中项改变事件.
' #####################################
Public Sub ForceSelectionChange()
    Call myExplorer_SelectionChange
End Sub


★ 第二步:

添加一个模块(名称只要合法就行),复制以下代码:

Option Explicit

Dim rHandler As ReplyHandler

' #############
' 挂钩邮件回复.
' #############
Public Sub HookReply()
    Set rHandler = New ReplyHandler
    Set rHandler.myExplorer = Application.ActiveExplorer
    rHandler.ForceSelectionChange
End Sub

' #############
' 解钩邮件回复.
' #############
Public Sub UnhookReply()
    Set rHandler = Nothing
End Sub


★ 第三步:

运行 HookReply 宏即可挂钩邮件回复,如需停止对点击 "回复" 事件的监控,那么请运行 UnhookReply 进行解钩。


最后,附上两张运行效果图:




PS:上述代码的运行环境为 Windows 7 + Outlook 2010!

--------------------------------

对此如有疑问,欢迎提出!

温馨提示:内容为网友见解,仅供参考
无其他回答

在outlook里,如何用VBA实现点击回复按钮时自动将邮件名写成指定的名称...
添加一个模块(名称只要合法就行),复制以下代码:Option ExplicitDim rHandler As ReplyHandler' ###' 挂钩邮件回复.' ###Public Sub HookReply() Set rHandler = New ReplyHandler Set rHandler.myExplorer = Application.ActiveExplorer rHandler.ForceSelectionChangeEnd Sub' ###' 解钩...

如何用VBA代码控制OUTLOOK发送邮件
'我一直是这样用的Sub SendMail()Set myOlApp = CreateObject("Outlook.Application")Set objMail = myOlApp.CreateItem(olMailItem)With objMail .To = "收件人邮箱地址" .Subject = "邮件主题" .Body = "邮件正文内容" .Attachments.Add "附件完整路径,如:D:\\1.docx" .Sen...

如何在Outlook中使用宏发送邮件并且使用已有签名
   实践发现outlook中是不支持宏的录制的,这样就带来了一些麻烦。   在网上搜来搜去,找到了VBA编程发邮件的代码如下:    '新建邮件     Set OutApp = CreateObject("Outlook.Application")    '创建outloo...

如何使用excel vba 对outlook进行操作?
'此邮件允许自动转发 \\x0d\\x0a .DeleteAfterSubmit = False '发送后保留副本 \\x0d\\x0a '发送之后移动到指定文件夹 \\x0d\\x0a .SaveSentMessageFolder = MyOutlookApp.GetNamespace( "MAPI ").GetDefaultFolder(olFolderInbox).Folders( "备份文件夹 ") \\x0d\\x0a...

如何通过Excel VBA和Outlook实现自动发送邮件功能
以前研究过类似的,好像Outlook有防病毒保护,不允许直接由Vba发送邮件,会出现提示框的。只有人为按确认键后才能发送。所以我当时是用宏自动生成草稿,最后由人工统一发送。当初也找到过第三方软件来解决这个问题,但现在忘了名称了。

outlook怎么设置邮件自动bcc
详细操作步骤如下:打开Outlook,然后按下ALT+F11键进入VBA编辑器。在编辑器中,双击打开“ThisOutlookSession”,在此处编写或粘贴用于自动添加BCC收件人的代码。代码中需要指定BCC收件人的电子邮件地址。完成代码编写后,保存并关闭VBA编辑器。接下来,需要在Outlook的选项中启用宏。依次点击“...

VBA发送邮件的常用方法?VBA如何自动发信?怎么使用VBA发送邮件?
基本方法包括创建邮件对象、设置邮件属性,如收件人、主题,并通过MailItem对象的方法发送邮件。首先,需要在VBA代码中启动Outlook应用,建立MailItem对象,然后调用相关方法设置属性和完成发送。VBA的强大之处在于其能帮助设置邮件主题、正文和附件。只需简单的VBA代码,就可以将Excel表格数据直接导入邮件正文,或...

outlook怎么禁用vba的发送邮件功能
outlook禁用vba的发送邮件功能步骤如下:1、打开outlook,并进入“开发人员”选项卡。2、点击“VisualBasic”按钮,打开VBA编辑器。3、在VBA编辑器中,选择“这台计算机上的项目”下拉菜单中的“Outlook项目”。4、在“项目资源”窗格中,双击“这台计算机上的项目”文件夹。5、双击“此电脑”文件夹,...

如何将用VBA自动保存的文件以邮件主题+文件名命名?
试试下面的代码,自动保存某一个特定的邮件到某一个文件夹里:Public Sub SaveAttach(Item As Outlook.MailItem) SaveAttachment Item, "D:\\" ' MsgBox "¸½¼þÒѱ£´æ"End Sub ' ±£´æ¸½¼...

如何做一个VBA程序,可以实现自动将Outlook里面的地址放入到To和CC里面...
Dim message As Outlook.MailItem Set message = Item If Not CheckAttachment(message) Then Cancel = True Exit Sub End If End Sub 调用下面这个函数,检查是否应该有附件:'''检查标题或者正文里“附件”字样,是否可以发送附件?'''Private Function CheckAttachment(message As Outlook.MailItem) ...

相似回答