我正在努力通过 VBA 在传入的电子邮件中插入一个字符串。该例程在发送邮件时工作正常,如果用户单击操作编辑,它将在传入邮件上工作。问题是传入的邮件被锁定为只读模式。在过去的 13.5 个小时里,我到处搜索。在早期版本的 Outlook 中是可能的,但是 Microsoft 已经删除了 Office 2013 中的 CommandBar 功能。基本上我需要一种方法来允许通过 VBA 中的设置来编辑邮件。
这里是例行公事
Sub StampReference()
Dim objOL As Outlook.Application
Dim objNS As Outlook.NameSpace
Dim objDoc As Word.Document
Dim objSel As Word.Selection
strFullReference = "Reference: " & Reference
On Error Resume Next
Set objOL = Application
If objOL.ActiveInspector.EditorType = olEditorWord Then
Set objDoc = objOL.ActiveInspector.WordEditor
Set objNS = objOL.Session
Set objSel = objDoc.Windows(1).Selection
objSel.Move wdStory, -1
objDoc.Characters(1).InsertBefore _
strFullReference & vbCrLf & vbCrLf
objSel.Move wdParagraph, 1
End If
Set objOL = Nothing
Set objNS = Nothing
End Sub
编辑
我已经破解了!这是为任何感兴趣的人更改模式的方法。它又快又脏,但它显示了它是如何完成的。我拿了一些有人编写的代码来进行重新发送,并使用变体来偶然发现要编辑的正确值。我在标记信息之前调用这个例程
Sub SetEditMode()
Dim myItem As Outlook.MailItem
Dim objInsp As Outlook.Inspector
Dim objActionsMenu As Office.CommandBarControl
Dim olNewMailItem As Outlook.MailItem
On Error Resume Next
Select Case TypeName(Application.ActiveWindow)
Case "Explorer"
Set myItem = ActiveExplorer.Selection.Item(1)
myItem.Display
Case "Inspector"
Set myItem = ActiveInspector.CurrentItem
Case Else
End Select
If myItem Is Nothing Then GoTo ExitProc
'edit mode
Set objInsp = ActiveInspector
objInsp.CommandBars.ExecuteMso ("EditMessage")
objActionsMenu.Execute
ExitProc:
End Sub