我在outlook2007已经建立了一个宏:答复是自动附加原附件,可是每次运行时都要手动点击,如何让它自动运行
VB宏:Sub答复邮件带附件()DimrplAsOutlook.MailItemDimitmAsObjectSetitm=GetCurrentItem()IfNotitm...
VB宏:Sub 答复邮件带附件()
Dim rpl As Outlook.MailItem
Dim itm As Object
Set itm = GetCurrentItem()
If Not itm Is Nothing Then
Set rpl = itm.Reply
CopyAttachments itm, rpl
rpl.Display
End If
Set rpl = Nothing
Set itm = Nothing
End Sub
Function GetCurrentItem() As Object
Dim objApp As Outlook.Application
Set objApp = Application
On Error Resume Next
Select Case TypeName(objApp.ActiveWindow)
Case "Explorer"
Set GetCurrentItem = objApp.ActiveExplorer.Selection.Item(1)
Case "Inspector"
Set GetCurrentItem = objApp.ActiveInspector.CurrentItem
End Select
Set objApp = Nothing
End Function
Sub CopyAttachments(objSourceItem, objTargetItem)
Set fso = CreateObject("Scripting.FileSystemObject")
Set fldTemp = fso.GetSpecialFolder(2) ' TemporaryFolder
strPath = fldTemp.Path & "\"
For Each objAtt In objSourceItem.Attachments
strFile = strPath & objAtt.FileName
objAtt.SaveAsFile strFile
objTargetItem.Attachments.Add strFile, , , objAtt.DisplayName
fso.DeleteFile strFile
Next
Set fldTemp = Nothing
Set fso = Nothing
End Sub 展开
Dim rpl As Outlook.MailItem
Dim itm As Object
Set itm = GetCurrentItem()
If Not itm Is Nothing Then
Set rpl = itm.Reply
CopyAttachments itm, rpl
rpl.Display
End If
Set rpl = Nothing
Set itm = Nothing
End Sub
Function GetCurrentItem() As Object
Dim objApp As Outlook.Application
Set objApp = Application
On Error Resume Next
Select Case TypeName(objApp.ActiveWindow)
Case "Explorer"
Set GetCurrentItem = objApp.ActiveExplorer.Selection.Item(1)
Case "Inspector"
Set GetCurrentItem = objApp.ActiveInspector.CurrentItem
End Select
Set objApp = Nothing
End Function
Sub CopyAttachments(objSourceItem, objTargetItem)
Set fso = CreateObject("Scripting.FileSystemObject")
Set fldTemp = fso.GetSpecialFolder(2) ' TemporaryFolder
strPath = fldTemp.Path & "\"
For Each objAtt In objSourceItem.Attachments
strFile = strPath & objAtt.FileName
objAtt.SaveAsFile strFile
objTargetItem.Attachments.Add strFile, , , objAtt.DisplayName
fso.DeleteFile strFile
Next
Set fldTemp = Nothing
Set fso = Nothing
End Sub 展开
1个回答
2011-07-19
展开全部
我们中有很多人不止一次在使用Outlook撰写电子邮件的时候会在邮件中写道:“我已经把你需要的文件添加到附件中了。”然后就直接点击“发送”,随后才意识到我们其实并没有向邮件中添加任何文件。天啊!
K.C. Lemson已经开发出了一个快速的应用程序可视化Basic语言(Visual Basic for Applications,VBA)脚本,这个脚本能够帮助我们避免上述的情况发生。
当邮件被发送的时候,这个脚本会检查邮件的内容,并搜索“附件”这个单词(既可以是完全匹配也可以是部分匹配)。如果没有在邮件中发现附件,那么就会出现一个弹出的对话框,并提示你没有向该邮件中添加附件。
我对原始脚本进行了微小了修改,以便使其在某些情况下对“附件”一词的搜索不是那么敏感,比如你使用“附件”一词做为一句话的开头的时候(例如,“附件中就是你需要的文件……”)
请注意,当你要创建这个脚本的时候,你首先需要在Outlook中启用宏(macros),由于Dim lngres As Long
If InStr(1, UCase(Item.Body), "附件") <> 0 Then
If Item.Attachments.Count = 0 Then
lngres = MsgBox("邮件内容中包含'附件', 但是没有发现附件 – 仍然发送?", _
vbYesNo + vbDefaultButton2 + vbQuestion, "你要求我向你提示...")
If lngres = vbNo Then Cancel = True
End If
End If
End Sub
5. 按F5键,检查这些代码,并确认它们被正确的编译。
6. 关闭代码编辑器,重新启动Outlook。在启动的时候Outlook会询问你是否需要运行宏;选择“启用宏”。
7. 发送一封内容中包含“附件”一词而实际上没有真正附件的测试邮件,以便确定这个脚本是否有效。
K.C. Lemson已经开发出了一个快速的应用程序可视化Basic语言(Visual Basic for Applications,VBA)脚本,这个脚本能够帮助我们避免上述的情况发生。
当邮件被发送的时候,这个脚本会检查邮件的内容,并搜索“附件”这个单词(既可以是完全匹配也可以是部分匹配)。如果没有在邮件中发现附件,那么就会出现一个弹出的对话框,并提示你没有向该邮件中添加附件。
我对原始脚本进行了微小了修改,以便使其在某些情况下对“附件”一词的搜索不是那么敏感,比如你使用“附件”一词做为一句话的开头的时候(例如,“附件中就是你需要的文件……”)
请注意,当你要创建这个脚本的时候,你首先需要在Outlook中启用宏(macros),由于Dim lngres As Long
If InStr(1, UCase(Item.Body), "附件") <> 0 Then
If Item.Attachments.Count = 0 Then
lngres = MsgBox("邮件内容中包含'附件', 但是没有发现附件 – 仍然发送?", _
vbYesNo + vbDefaultButton2 + vbQuestion, "你要求我向你提示...")
If lngres = vbNo Then Cancel = True
End If
End If
End Sub
5. 按F5键,检查这些代码,并确认它们被正确的编译。
6. 关闭代码编辑器,重新启动Outlook。在启动的时候Outlook会询问你是否需要运行宏;选择“启用宏”。
7. 发送一封内容中包含“附件”一词而实际上没有真正附件的测试邮件,以便确定这个脚本是否有效。
追问
是否就是按照您给我的代码再建立一个宏?我那个宏还需要吗
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询