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