0

これは Access 2010 にあり、VBA の経験や知識はほとんどありません。

私のフォーム (frmEmailLookup) には、コンボ ボックスとリスト ボックス、およびサブフォームが設​​定されているため、ユーザーが cmbBuilding から建物を選択すると、フォームの残りの部分に、最大 4 人分の連絡先メール アドレスを含む、その建物に関するデータが入力されます。建物内の人々 (lstBuildingRepEmail1、lstBuildingRepEmail2、lstBuildingRepEmail3、lstBuildingRepEmail4)。サブフォーム (qryBuildingAreaLookup) からのクエリを添付ファイルとして電子メールを生成するには、ボタン (butEmailRecords) が必要です。何かを閉じるマクロを設定できますが、動的な電子メール アドレスは使用できません。ユーザーが更新を行うためにプログラムに深く入り込む必要はありません。

どんな助けでも大歓迎です。私は、多くのコード作成の助けを求めていることを知っています。

これが私が試したことです:

    Option Compare Database
Private Sub butEmailRecords_Click()
Dim outputFileName As String
outputFileName = CurrentProject.Path & "\BuildingInventory" & ".xlsx"
DoCmd.TransferSpreadsheet acExport,      acSpreadsheetTypeExcel9, "qryBuildingAreaLookup",     outputFileName, True

On Error GoTo Error_Handler
Dim objOutlook As Outlook.Application
Dim objEmail As Outlook.MailItem
Set objOutlook = CreateObject("Outlook.application")
Set objEmail = objOutlook.CreateItem(olMailItem)

Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("qryBuildinAreaLookup")
With rs

With objEmail
.To = tblBuilding.BuildingRep1
.To = tblBuilding.BuildingRep2
.To = tblBuilding.BuildingRep3
.To = tblBuilding.BuildingRep4
.Subject = "Look at this sample attachment"
.body = "The body doesn't matter, just the attachment"
.Attachments.Add "L:\Administration\FacilityInventoryDatabase\BuildingInventory.xls    x"
.Send
'.ReadReceiptRequested
End With
Exit_Here:
Set objOutlook = Nothing
Exit Sub

Error_Handler:
MsgBox Err & ": " & Err.Description
Resume Exit_Here
End Sub
4

2 に答える 2

0

ここに私が使用するものの基本があります:

'Refers to Outlook's Application object
Dim appOutlook As Object

'Refers to an Outlook email message
Dim appOutlookMsg As Object

'Refers to an Outlook email recipient
Dim appOutlookRec As Object

'Create an Outlook session in the background
Set appOutlook = CreateObject("Outlook.Application")

'Create a new empty email message
Set appOutlookMsg = appOutlook.CreateItem(olMailItem)

'Using the new, empty message...
With appOutlookMsg

'SQL statement to grab emails

Set recordset = currentdb.openrecordset('SQL statement')

Do While Not recorset.EOF
Set appOutlookRec = .Recipients.Add(recordset.Email)
appOutlookRec.Type = olTo
recordset.MoveNext
Loop

.Subject = ....
.Body = ....
.Send

End With

それが私が使用するものの基本です。私は初心者なので、これが最善の方法ではないかもしれませんが、それが出発点になるはずです。(参照ライブラリに Microsoft Oulook も追加する必要がありました。)

于 2013-04-02T21:08:13.663 に答える
0

Outlook に (何についても) 依存したくないので、CDO オブジェクトを使用してメッセージを送信します。

CDO を使用してメールを送信する (ダウンロード可能な VBA コードを含む) に関する非常に包括的な記事がここにあります。

http://www.cpearson.com/excel/Email.aspx

于 2013-04-03T10:28:27.867 に答える