1

一度に大量の電子メールを送信するために、VBA コードをいくつかまとめてアクセスしようとしています。これらの電子メールには、それぞれ複数の添付ファイルと複数の受信者が含まれています。

主キーが「電子メール レポート名」のリストである Access にテーブルが 1 つあります。各列には、この電子メール レポートが送信される電子メール アドレスが含まれています。

別の表には「メール レポート名」もあり、各列はそのメールに添付されるファイルのハード ドライブ上のファイル パスです。

また、これらのテーブルを呼び出し、カスタム関数によって基準フィールドに入力される電子メール レポート名でフィルター処理する 2 つのクエリもあります。

Access からメールを送信するための Outlook コーディングが正常に機能しています。しかし、さまざまな「電子メールレポート名」をループさせて、それらのクエリから関連情報を引き出して、受信者リストと添付ファイルリストに入力する方法がまったくわかりません。

サンプルコードを含めなくて申し訳ありませんが、私は本当にこれについて海に出ており、どこから始めればよいかさえわかりません.

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

EmailaddressFilepath

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

EmailaddressFilepath

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 に答える