3

合理的な「グーグル」を実行しましたが、問題の答えが見つかりませんでした。

次の 2 つのサブルーチンがあります。2つはまったく同じですが、最初のものには「ForwardMailItem.Display」があり、2番目のものにはありません。その結果、最初のメールで作成された下書きメールには「testing here」というテキストが挿入され、2 番目のメールで作成されたメールには挿入されたテキストが含まれていません。いくつか質問があります。誰かが私を助けてくれることを願っています。1) .InsertBefore だけでは効果がないように見えるため、.Display メソッドを使用せずに、転送されたメールに新しいテキストを挿入するにはどうすればよいですか? 2) 項目を視覚的に表示する以外に、私の場合、.Display はどのような特別なことを行いますか?

Sub TestInsertBeforeWithDisplay()

    Dim NewMailItem As Outlook.MailItem
    Dim ForwardMailItem As Outlook.MailItem

    For Each NewMailItem In Application.Session.GetDefaultFolder(olFolderInbox).Items.Restrict("[Unread]=true")
        Set ForwardMailItem = NewMailItem.FORWARD
        ForwardMailItem.GetInspector.WordEditor.Characters(1).InsertBefore "testing here"
        ForwardMailItem.Display
        ForwardMailItem.Close olSave
    Next NewMailItem

End Sub

Sub TestInsertBeforeWithoutDisplay()

    Dim NewMailItem As Outlook.MailItem
    Dim ForwardMailItem As Outlook.MailItem

    For Each NewMailItem In Application.Session.GetDefaultFolder(olFolderInbox).Items.Restrict("[Unread]=true")
        Set ForwardMailItem = NewMailItem.FORWARD
        ForwardMailItem.GetInspector.WordEditor.Characters(1).InsertBefore "testing here"
        ForwardMailItem.Close olSave
    Next NewMailItem

End Sub
4

1 に答える 1

1

興味深い質問です。私は Outlook のコーディングはあまりしませんが、答えは、ActiveInspector を閉じて保存する必要があるということだと思います。

Sub TestInsertBeforeWithDisplay()
Dim NewMailItem As Outlook.MailItem
Dim ForwardMailItem As Outlook.MailItem
Dim ActInsp As Outlook.Inspector

For Each NewMailItem In Application.Session.GetDefaultFolder(olFolderInbox).Items.Restrict("[Unread]=true")
    Set ForwardMailItem = NewMailItem.Forward
    Set ActInsp = ForwardMailItem.GetInspector
    With ActInsp
        .WordEditor.Characters(1).InsertBefore "testing here"
        .Close (olSave)
    End With
    ForwardMailItem.Close olSave
Next NewMailItem
End Sub

私はあなたの問題を再現することができ、上記のコードはそれを修正しました. まだ保存する必要があるかどうかはわかりませんForwardMailItem

于 2013-07-20T16:27:48.140 に答える