2011-07-04 36 views
2

マクロ内のVBAを使用してレポートから自動電子メールを送信しようとしています。レポートは、outlook2007によってAccess2007から送信されます。レポートが送信されると、「プログラムがあなたのアドレス帳または連絡先にアクセスしようとしています」または「プログラムがOutlookに保存した電子メールアドレスにアクセスしようとしています...」というOutlookからのセキュリティメッセージが表示されます。このメッセージは、ウィンドウタスクスケジューラを使用して自動的にレポートを送信したいので、私にとっては問題です。このセキュリティ通知を無効にしたいのですが。 Googleで検索しましたが、これまでのコードはエラーですが、他に何をすべきかはわかりません。あなたの助けを前もってありがとう。私は初心者のプログラマーです。エラーはVBAを使用してOutlookセキュリティ設定を無効にする

Public Sub Send_Report() 
Dim strRecipient As String 
Dim strSubject As String 
Dim strMessageBody As String 
Dim outlookapp As Outlook.Application 

Set outlookapp = CreateObject("Outlook.Application") 

OlSecurityManager.ConnectTo outlookapp 'error is here says object required 

OlSecurityManager.DisableOOMWarnings = True 
On Error GoTo Finally 

strRecipient = "[email protected]" 
strSubject = "Tile of report" 
strMessageBody = "Here is the message." 

DoCmd.SendObject acSendReport, "Report_Name", acFormatPDF, strRecipient, , ,  strSubject, strMessageBody, False 

Finally: 
OlSecurityManager.DisableOOMWarnings = False 


End Sub 

答えて

2

OlSecurityManagerは何もないので、エラーになります。あなたはそれを宣言しておらず、あなたはそれを何かに設定していないので、あなたがそれを使用しようとすると、VBAはあなたが何を話しているのか分かりません!

Outlookセキュリティマネージャー(アドインはhereです)を使用しようとしているようです。あなたはそれを購入しましたか?もしそうでなければ、あなたのシステムにはおそらくないでしょう。あなたは、私が疑われるとして、それを持っていない場合は、代替が送信され

Dim OlSecurityManager As AddinExpress.Outlook.SecurityManager 
Set OlSecurityManager = New AddinExpress.Outlook.SecurityManager 

電子メール:あなたはそれを持っていない場合

、あなたはおそらく宣言し、このようにそれを設定する必要がありますCDOを使用します。

最初に、Tools> References>のMicrosoft CDOライブラリなどの横にあるチェックマークで、CDOライブラリへの参照を設定します。

Dim cdoConfig 
Dim msgOne 

Set cdoConfig = CreateObject("CDO.Configuration") 
With cdoConfig.Fields 
    .Item(cdoSendUsingMethod) = cdoSendUsingPort 
    .Item(cdoSMTPServerPort) = 25 'your port number, usually is 25 
    .Item(cdoSMTPServer) = "yourSMTPserver.com" 
    '.Item(cdoSendUserName) = "your username if required" 
    '.Item(cdoSendPassword) = "your password if required" 
    .Update 
End With 

Set msgOne = CreateObject("CDO.Message") 
With msgOne 
    Set .Configuration = cdoConfig 
    .To = "[email protected]" 
    .from = "[email protected]" 
    .subject = "Testing CDO" 
    .TextBody = "It works just fine." 
    .Attachments.Add "C:\myfile.pdf" 
    .Send 
End With 

これはOutlookよりも少し面倒です。使用するSMTPサーバーのアドレスを事前に知っておく必要があるためです。

+0

あなたは正しいです、私は見通しのセキュリティマネージャアドインを持っていない私はあなたの第二の方法を使用して、私が得る何を更新します – guest1

+0

こんにちは。 Jean、私はあなたの秒でPDFとしてアクセスからのレポートを添付する議論が表示されませんondコード。添付ファイルも送信できますか?どうもありがとう! – guest1

+0

お返事ありがとうございました!実際には、添付ファイルはAccessデータベースに存在するレポートです。ローカルドライブからファイルを添付していません。それを明確にするために、Accessのデータベースにレポートがあります。私はこのレポートをAccessから直接電子メールで送信しようとしていて、添付ファイルとして送信しました。それは理にかなっていますか? – guest1

0

これは遅い回答ですが、私はちょうど同様の問題に遭遇しました。 Outlook.Applicationを使用して別の解決策があります!

ソリューションを探しここで、完全な信用ながら、私はそれつまずく: http://www.tek-tips.com/faqs.cfm?fid=4334

しかし、このサイトのソリューションは、単に、代わりに.sendコマンドを使用しての示唆するもの、 `.Display」コマンドを使用して、いくつかを送ります以下のような電子メールを送信するために、キーボードのキー、:!

Sub Mail_workbook_Outlook() 
'Working in Excel 2000-2016 
    Dim OutApp As Object 
    Dim OutMail As Object 

    Set OutApp = CreateObject("Outlook.Application") 
    Set OutMail = OutApp.CreateItem(0) 

    With OutMail 
     .To = "[email protected]" 
     .CC = "" 
     .BCC = "" 
     .Subject = "This is an automated email!" 
     .Body = "Howdy there! Here, have an automated mail!" 
     .Attachments.Add ActiveWorkbook.FullName 
     .Display 'Display instead of .send 
     SendKeys "%{s}", True 'send the email without prompts 
    End With 
    On Error GoTo 0 

     Set OutMail = Nothing 
     Set OutApp = Nothing 
    End 
End Sub 
関連する問題