1

現在、次のコードを使用して Outlook で電子メールを作成し、ユーザーが Outlook で必要なものを入力できるようにします。電子メールが送信されると、システムは電子メールを保存するかどうかを確認するよう求めます。

            Dim objOutlook As Object
            Dim objMessage As Object
            Dim objInspector As Object

            If strEMail <> "" Then
                objOutlook = CreateObject("Outlook.Application")
                objMessage = objOutlook.CreateItem(0)
                objMessage.To = strEMail

                objInspector = objMessage.GetInspector
                objInspector.Display()

                While Not objInspector.CurrentItem Is Nothing
                End While

                frmSaveSentEmail.BringToFront()
                frmSaveSentEmail.ShowDialog()

メール エディタとして Word を使用していない限り、このコードは Outlook 2003 で正常に動作します。ただし、Word が電子メール エディターとして設定されていると、電子メール オブジェクトが閉じられているかどうかをテストする while ループが終了しません。

Word をエディタとして使用しても機能するように、これを別の方法で処理する方法はありますか?

4

2 に答える 2

0

私はVB.NETを介したOutlookのプログラミングについてはそれほど経験がありませんが、そのループは確かに疑わしいようです。おそらく、プロパティを繰り返しチェックするのではなく、インスペクターのCloseイベントを利用してみる必要がありCurrentItemます。私が間違っていなければ、イベントハンドラー内でダイアログを表示できるはずです。

于 2010-07-28T23:28:53.870 に答える
0

ループを次のように変更することになりました:

  While Not objOutlook.ActiveInspector Is Nothing
  End While

これで問題は解決しました。

于 2010-07-29T14:47:58.657 に答える