2017-08-04 20 views
3

したがって、送信前にユーザーが電子メールを閉じた場合を除いて、正常に機能するアセットの更新された画像を電子メールで送信できる機能があります。エラーハンドラをセットアップしましたが、エラーをキャプチャしていないようです。ここに私の機能コードがあります:エラーハンドラが機能VBAアクセス2013で機能していない

Function Email() 
Globals.Logging "Opened Email for updating picture" 
On Error GoTo ErrorHandler: 
Dim strTagNumber As String 
strTagNumber = Me.txtTagNumber.Value 

Dim varName As Variant 
Dim varCC As Variant 
Dim varSubject As Variant 
Dim varBody As Variant 

varName = "[email protected]" 
varCC = "" 
varSubject = "Updated Picture for Asset Number " & strTagNumber 
varBody = "Sent by MS Access" 

DoCmd.SendObject , , , varName, varCC, , varSubject, varBody, True, False 
Globals.Logging "Sent Email" 

Cleanup: 
    varName = Nothing 
    varCC = Nothing 
    varSubject = Nothing 
    varBody = Nothing 
    Exit Function 

ErrorHandler: 
    Select Case Err.Number 
    Case 2501 
     MsgBox "Email message was Cancelled." 
     Globals.Logging "Canceled Email" 
    Case Else 
     MsgBox Err.Number & ": " & Err.Description 
     Globals.Logging "Email Error " & Err.Number & ": " & Err.Description 
    End Select 
    Resume Cleanup 
End Function 

助けていただければ幸いです。前もって感謝します。

+0

これを取り除くと 'On Error GoTo ErrorHandler:'はどの行が停止するのですか? – braX

+0

キャッチするのにエラーがありますか?あなたがクリーンアップで行う最初のことは、 'Exit Function'ですか? –

+0

エラーハンドラが処理するように設計されているものを送信する前にユーザーが電子メールを閉じると、エラーがスローされます。エラーは、実行時エラー '2501'です "SendObjectアクションがキャンセルされました"。 –

答えて

0

Access 2016でテストされました。エラーがキャプチャされ、「電子メールメッセージがキャンセルされました」というメッセージボックスが表示されます。

メールを送信するためにOutlookオブジェクトを使用することもできます。

+0

Hmmm、それはまだ私のために働いていないので、間違いなく奇妙です。 –

1

online documentationで説明したように、DoCmd.SendObjects

が...メールアプリケーションプログラミングインターフェイス(MAPI)つまり

を使用して、アクセス(またはExcel)が実際にはありません。独自の電子メール機能。これは、正しくインストールされ、構成されたMAPI電子メールクライアントに依存します。意図的にWindowsに別の既定の電子メールクライアントをインストールしてセットアップしていない限り、既定値はMS Officeにインストールされていると思われます。 Windowsの電子メールクライアントは多くのバージョンのWindowsで変更されていますが、デフォルトはWindowsの簡易電子メールクライアントでもあります。

MAPIクライアントがエラーメッセージを表示していて、呼び出しを開始したVBAモジュールにプログラムフローを返す前に、実際にエラーをスローしていない可能性があります。

エラーが発生したかどうかにかかわらず、MAPIおよび/またはCOMオートメーションインターフェイスの特定の動作を指示するOutlook設定のある時点を認識しています。私は通常、検証の前にStack Overflowに関するそのような情報を投げ捨てることはしませんでしたが、この問題に関する議論から、誰も実際にSendObjectのこの側面に対処していません。

他が示唆されているとしてOutlookを経由して電子メールを送信するためにオートメーションを使用してほかには、Windowsのデフォルトのメールクライアントの設定を検査できます。おそらく別の電子メールクライアントをテストして、結果が異なるかどうかを確認してください。

関連する問題