2016-04-22 12 views
0

この問題に関する情報を見つけるのが難しいです。私が見つけた唯一の情報は、これがAccess 2010のバグであったようだ(私は2013年にそれを修正したいと思っています。DoCmd.SendObjectメソッドとエラー3211アクセス2013 VBA

私は、コマンドボタンのon_clickイベントでoutlookの電子メールでレポートを送信するために、アクセスvbaでDoCmd.SendObjectメソッドを使用しています。私のコードは正常に機能しているように見え、電子メールは意図したとおりに出力されます。問題は、コードを実行した後、レポートが閉じているにもかかわらず、レポートのレコードソースとして機能するテーブルに変更を加えることができないということです。エラー3211が発生しました。「使用中のためレコードソースをロックできません......」

DoCmd.SendObjectコードを削除しても、テーブルに変更を加えることは問題ありません。エラーは表示されません。 。私は、メソッド自体がOutlookとテーブルの間に何らかの種類のリンクや接続を確立していると仮定しています。

私の質問はこれを解決する方法です。 DoCmd.SendObjectメソッドを使用した後、Outlookとテーブル間のリンク/接続を終了できるVBAコードはありますか? ALLに

+0

私は良い答えがありません。フロントエンドとバックエンドが別々の場合は、フロントエンドのテーブルへのリンクを削除して再作成することができます。それは助けるかもしれません。 –

+0

それは大丈夫です、ジョン。私はリンクがおそらく動作するだろうと思う。私は実際に別の方法を使って電子メールを送ってしまいました(私の解決策は以下の回答に掲載します)。 –

答えて

0

私は最終的にすべての私の問題を解決した電子メールを送信するための別の方法を、使用して終了し、SendObjectメソッドよりも柔軟であることが判明しました。

(コードが役に立つと分かっている他の人にはちょっとメモ:私はpdfファイルを作成するためにコードを使用しています。そのため、pdfファイル名が変数であるのはこのためです。 )

'Create a new e-mail and attach previously created pdf 

      Dim strLocation As String 
      Dim OutApp As Object 
      Dim OutMail As Object 
      Dim EmailTo As Variant 
      Set OutApp = CreateObject("Outlook.Application") 
      Set OutMail = OutApp.CreateItem(0) 

      EmailTo = DLookup("Email", "tblTempProcessing") 

       With OutMail 
       .To = EmailTo 
       .CC = "" 
       .BCC = "" 
       .Subject = "Subject Text" 
       .Body = "Body Text" 
       .Attachments.Add ("C:\Folder\SubFolder\" & Variable & ".PDF") 
       .Send 
       End With 
       On Error GoTo 0 
関連する問題