2013-03-28 36 views
0

基本上我需要每天发送一份报告给经销商,我们支付资金。我有一张桌子上有经销商名称,身份证号码和他们的电子邮件地址。访问2010/2007年VBA的电子邮件每日报告基于与电子邮件地址表

对于每份报告,我需要循环查看此表并通过ID号将电子邮件发送给相应的经销商。

的经销商信息:

SELECT DealerDetail.dealer_id, DealerDetail.dealer_name, DealerDetail.email 
FROM DealerDetail; 

查询我的报告使用:

SELECT LoanDetail.Book_Date, LoanDetail.DLR_Name, 
    LoanDetail.DLR_ID, LoanDetail.Cust_ID, LoanDetail.Amt_Fin, 
    LoanDetail.APR, LoanDetail.Buy_Rate, LoanDetail.Pmt_Amt, 
    LoanDetail.TERM, LoanDetail.Part, LoanDetail.[Flat Fee] 
FROM LoanDetail 
WHERE (((LoanDetail.Book_Date)=Date()-1)); 

回答

1

一种方式是遍历经销商表并使用SendObject发送报告:

Dim rs AS DAO.Recordset 

    Set rs = CurrentDB.OpenRecordset("SELECT email FROM DealerDetail") 

    Do While Not rs.EOF 
     DoCmd.SendObject acReport, "ReportName", _ 
      acFormatPDF, rs!Email, , , "Report", "Here is the report", True 
     rs.MoveNext 
    Loop 
+0

我会给这个镜头。感谢您的快速回复。 – chris

+0

确定您提供的代码正常工作,并将完整报告的电子邮件发送给表中的每个经销商。是否有任何方法可以过滤报告,以便只将个别经销商的报告详细信息发送到Dealer Detail表中的电子邮件地址(与报告中的LoanDetail表中的Dealer_ID和DealerDetail表中的Dealer_ID相匹配)?再次感谢! – chris

+0

你可以OutPut到打开报告之后用可变的参数参见:http://stackoverflow.com/questions/11498794/splitting-a-multi-page-ms-access-report-into-individual-pdf-基于文件的文件/ 11502881#11502881 – Fionnuala

2

另一种方法是循环并创建一个outlook实例来发送t他的电子邮件,显示在下面的代码

Private Function SendEmail(attachment, subject,strContactEmail,strEmailText,strCc) 

Dim olLook As Object      'Start MS Outlook 
Dim olNewEmail As Object     'New email in Outlook 


Set olLook = CreateObject("Outlook.Application") 
Set olNewEmail = olLook.createitem(0) 


    With olNewEmail 'Attach template 
     .To = strContactEmail 
     .cc = strCc 
     .body = strEmailText 
     .subject = subject 
    .attachments.Add (attachment) 
    .display 
    End With 
.send 


End Function 

希望这有助于!

+1

假设已安装Outlook。另外,报告在哪里? – Fionnuala

相关问题