1

我希望将一些 VBA 代码放在一起,以便一次发送一堆电子邮件。这些电子邮件每个都有多个附件和多个收件人。

我在 Access 中有一个表,其中主键是“电子邮件报告名称”列表,每列包含此电子邮件报告发送到的电子邮件地址。

在另一个表中,我还有“电子邮件报告名称”,每列是要附加到该电子邮件的文件的硬盘驱动器上的文件路径。

我还有两个查询,它们调用这些表并按电子邮件报告名称过滤,该名称由自定义函数填充到条件字段中。

我的 Outlook 编码工作正常,可以从 Access 发送电子邮件。但我完全不知道如何让它遍历不同的“电子邮件报告名称”,然后从这些查询中提取相关信息以填写收件人列表和附件列表。

很抱歉没有包含任何示例代码,但我真的很想在这方面出海,甚至不知道从哪里开始。

如果有任何没有 SQL 的纯 VBA 解决方案,那将是理想的。我还不知道任何 SQL,所以即使我确实让它最初工作,我也很难根据需要修改代码。

谢谢,


SELECT FilePaths.MailItem, FilePaths.FilePath1, 
       FilePaths.FilePath2, FilePaths.FilePath2, 
       FilePaths.FilePath4, FilePaths.FilePath5, 
       FilePaths.FilePath6, FilePaths.FilePath7,
       FilePaths.FilePath8, FilePaths.FilePath9, 
       FilePaths.FilePath10, FilePaths.FilePath11, 
       FilePaths.FilePath12, FilePaths.FilePath13, 
       FilePaths.FilePath14, FilePaths.FilePath15, 
       FilePaths.FilePath16 
FROM FilePaths 
WHERE (((FilePaths.MailItem)=EmailItemSelect()));
4

1 回答 1

2

设置表格的最佳方式是在以下几行:

电子邮件地址

ID 
EmailAddress
OtherDetails

文件路径

ID
MailItem
FilePath

电子邮件地址文件路径

FilePathID
AddressID

我不太清楚mailitem是什么,所以我把它留在了里面。

表 EmailaddressFilepath 包含匹配哪个地址接收哪些项目。

电子邮件地址

ID     EmailAddress    OtherDetails
1      joe@example.com Joe Bloggs

文件路径

ID    MailItem    FilePath
1     Help        z:\docs\help.doc
2     More help   z:\docs\morehelp.doc

电子邮件地址文件路径

FilePathID    AddressID
   1              1
   2              1

然后你需要一些代码

Dim rs As Recordset
Dim db as Database

''Something like
sSQL="SELECT EmailAddress, Filepath " _
    & "FROM ( EmailaddressFilepath " _
    & "INNER JOIN EmailAddresses ON " _
    & "EmailaddressFilepath.AddressID = EmailAddresses.ID) " _
    & "INNER JOIN Filepaths ON EmailaddressFilepath.FilePathID = Filepaths.ID " _
    & "WHERE FilePathID=1"


Set rs = db.Openrecordset(sSQL)

'You now have a recordset with email addresses and attachments
'there would be other approaches, but this will do for now.

 Do While Not rs.EOF
     sEmail=rs!Email
     'set up outlook email

     Do While rs!Email=sEmail
     ''Attachment
         sAttach=rs!Filepath 
         rs.MoveNext
         If rs.Eof Then
            exit loop
         End if
     Loop
 Loop
于 2012-08-27T19:58:06.940 回答