Vba 将文本插入传入电子邮件Outlook 2013锁定为只读

Vba 将文本插入传入电子邮件Outlook 2013锁定为只读,vba,outlook,inbox,incoming-mail,Vba,Outlook,Inbox,Incoming Mail,我正在努力通过VBA在传入的电子邮件中插入字符串。该例程在发送邮件时工作正常,如果用户单击“操作”“编辑”,它将在接收邮件时工作。问题是传入邮件在只读模式下被锁定。我花了13.5个小时到处找。这在早期版本的Outlook中是可能的,但是Microsoft已在Office 2013中删除了CommandBar功能。基本上,我需要一种方法来允许邮件通过VBA中的设置进行编辑 这是例行公事 Sub StampReference() Dim objOL As Outlook.Application Di

我正在努力通过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
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

我已经破解了!以下是为感兴趣的人更改模式的方法它既快又脏,但它展示了如何完成。我使用了一些别人编写的代码进行重发,并使用各种变体偶然发现了要编辑的正确值。我在输入信息之前调用了这个例程

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

用户2970334

对于其他有同样问题的人,你可以自己回答,然后接受答案。任何在搜索中找到此主题的人都会看到答案,并且更有可能查找到有用的答案。