0

次のようなコードを変更したいと思います。

Sub SendEmail()

    Dim myOlApp As Outlook.Application
    Dim myItem As Outlook.MailItem

    'Create an Outlook application object
    Set myOlApp = New Outlook.Application

    'Create a new MailItem form
    Set myItem = myOlApp.CreateItem(olMailItem)

    'Build and display item
    With myItem
                .To = “test@test.com”
                .Subject = “Test Subject”
                .HTMLBody = “Test Body”
                .Display
                .SaveAs “C:\Test.msg”, olMSG   
    End With

サブ終了

このコードは、アプリケーション全体のさまざまなボタンから呼び出されます。ボタンをクリックすると、新しいメールが作成されて保存されます。残念ながら、電子メールは作成されるとすぐに送信される前に保存されます...そのため、変更が加えられた場合、保存されたバージョンには含まれません。

このコードを変更して、送信されたメールのみを保存するにはどうすればよいですか?

必要に応じてフォローアップの質問をしてください。できる限り対応させていただきます。

ありがとう!

ロバート

4

2 に答える 2

2

Access で Outlook のイベントを使用できます。この例では、次のコードを含む clsOlMail というクラス モジュールが必要です。

''Requires reference to the Microsoft Outlook x.x Object Library
Dim WithEvents conItems As Outlook.Items

Private Sub Class_Initialize()
   Set oApp = Outlook.Application
   Set oNS = oApp.GetNamespace("MAPI")
   Set conFolder = oNS.GetDefaultFolder(olFolderSentMail)
   Set conItems = conFolder.Items
End Sub

Private Sub Class_Terminate()
   Set conItems = Nothing
   Set conFolder = Nothing
   Set oNS = Nothing
   Set oApp = Nothing
End Sub

Sub ConItems_ItemAdd(ByVal Item As Object)
Dim frm As Form

   Set frm = Forms!frmEmailDetails

   frm.txtSenderName = Item.SenderName
   frm.txtSentOn = Item.SentOn
   frm.txtTo = Item.To
   frm.txtCreationTime = Item.CreationTime
   frm.txtBCC = Item.BCC
   frm.txtCC = Item.CC
   frm.txtSentOnBehalfOfName = Item.SentOnBehalfOfName
   frm.txtSubject = Item.Subject
   frm.txtBody = Item.Body
End Sub

これらのテキスト ボックスを含む frmEmailDetails というフォームも必要です。

txtSenderName、txtSentOn、txtTo、txtCreationTime、txtBCC、txtCC、txtSentOnBehalfOfName、txtSubject、txtBody

そして、このコード:

Private oEvent As clsOLMail
''Requires reference to Microsoft Outlook x.x Object Library

Public oApp As Outlook.Application
Public oNS As Outlook.NameSpace
Public conFolder As Outlook.MAPIFolder

Private Sub Form_Open(Cancel As Integer)
   Set oEvent = New clsOlMail
End Sub 

フォームを開き、Outlook からメールを送信します。上記の例のいずれかを使用できます。フォーム フィールドには、送信された電子メールの関連する詳細が入力されている必要があります。Outlook のセキュリティ警告が表示される可能性があります。

から: http://wiki.lessthandot.com/index.php/Access_and_Email

于 2009-09-04T19:46:51.127 に答える