2009-08-12 28 views
0

現在、電子メールを送信するvbaマクロを作成していますが、メッセージは作成されますが、エラーが生成されたので送信されません。現在のコード:アクセス2003年にvbaを使用してメールを送信するとランタイムエラーが発生する

Function CreateHURMail(Filename) 

Dim olApp As Outlook.Application 
Dim objMail As Outlook.MailItem 
Set olApp = New Outlook.Application 
Set objMail = olApp.CreateItem(olMailItem) 

With objMail 
    .Subject = "Test Message" 
    .Body = "Body Text" 
    .To = "[email protected]" 
    .Attachments.Add (Filename) 
    .Display 

    On Error Resume Next 
    .Send 

    'If Err.Number = 287 Then 
    ' MsgBox "Still doesn't work!", vbOKOnly, "DOH!" 
    'End If 
End With 


End Function 

誰でもこの問題を解決する方法はありますか?

ありがとうございます。

+1

同様に、注釈:Outlookでは、明らかにセキュリティ上の理由から、VBAを介したメッセージの送信が非常に制限されています。私は、電子メールを送信するための小さなコマンドラインツールを使用するほうがよいと思います。 –

答えて

3

アクセスでは、DoCmd.SendObjectを使用して電子メールを送信します。例:

Call DoCmd.SendObject(acSendNoObject, To:="[email protected]", 
    Subject:="Test Message", MessageText:="Body Text", EditMessage:=true) 

No Objectを送信する代わりに、テーブル、クエリ、フォーム、レポートまたはフォームを送信することもできます。このようにして、通常のファイルを添付することはできません。

Outlookを自動化してメッセージを送信しようとすると、Outlookによってキャッチされます。 Outlookのセキュリティ設定によっては、自動化によってメールを完全に送信できないため、自動化が許可されている場合はポップアップを使用してユーザーに尋ねるか、メールを送信するだけです(後者には注意してください)。

セキュリティによってセキュリティが完全に自動送信されない、または確認ダイアログボックスでユーザーが「いいえ」をクリックしたためにメールの送信が中止された場合、エラー287が発生します。

セキュリティを完全に無効にするか(ユーザーがメールの送信を確認する)、またはmdbファイルに署名してOutlookで信頼する方法は2つあります。後者はかなり複雑ですが、最も安全です。このことができます

希望、あなたがOutlook Redemptionを検討したいと思うかもしれ

関連する問題