简体   繁体   English

将访问附件字段作为CDO附件发送到VBA

[英]Send Access Attachment Field as a CDO Attachment with VBA

I have the following code: 我有以下代码:

Option Compare Database
Private Sub Command27_Click()

Dim fso, f
Set fso = CreateObject("scripting.FileSystemObject")
Set f = fso.OpenTextFile("M:\Instructor Letter Templates (Typical).htm")
InstructorText = f.ReadAll
f.Close
Set f = Nothing
Set fso = Nothing

Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim sql As String

Dim strWhere As String

Set db = CurrentDb()
sql = "SELECT Classes.ClassID, Grade.GradeID, Instructors.RiosaladoEmail, students.sLastName, students.sFirstName, Grade.Form, Grade.Printout FROM students INNER JOIN (Classes INNER JOIN (Instructors INNER JOIN Grade ON Instructors.InstructorID = Grade.[Instructor]) ON Classes.ClassID = Grade.ClassID) ON students.StudentID = Grade.StudentID WHERE Grade.DateProcessed=Date()"
Set rs = db.OpenRecordset(sql, dbOpenDynaset)

Do Until rs.EOF

Dim Class As String
Dim Grade As String
Dim Email As String
Dim Today As String
Dim sLast As String
Dim sFirst As String
Dim Form As String


Class = rs("ClassID")
Grade = rs("GradeID")
Email = rs("RiosaladoEmail")
sLast = rs("sLastName")
sFirst = rs("sFirstName")
Form = rs("Form")

Const cdoSendUsingPickup = 1
Const cdoSendUsingPort = 2
Const cdoAnonymous = 0
Const cdoBasic = 1
Const cdoNTLM = 2

Set cdomsg = CreateObject("CDO.Message")
cdomsg.Subject = sLast & "," & sFirst & Class & Chr(32) & Form
cdomsg.FROM = "<myemail>"
cdomsg.To = Email
cdomsg.HTMLBody = InstructorText
cdomsg.AddAttachment


cdomsg.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2

'Name or IP of Remote SMTP Server
cdomsg.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"

'Type of authentication, NONE, Basic (Base64 encoded), NTLM
cdomsg.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = cdoBasic

'Your UserID on the SMTP server
cdomsg.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusername") = "MyEmail"

'Your password on the SMTP server
cdomsg.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "MyPW"

'Server port (typically 25)
cdomsg.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465

'Use SSL for the connection (False or True)
cdomsg.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True

'Connection Timeout in seconds (the maximum time CDO will try to establish a connection to the SMTP server)
cdomsg.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60

cdomsg.Configuration.Fields.Update

cdomsg.Send

rs.MoveNext
Loop

Set rs = Nothing
Set db = Nothing

End Sub

In the query, the field "Grade.Printout" is an Access attachment field with a file attached to it ... in a table. 在查询中,“Grade.Printout”字段是一个Access附件字段,其中附有一个文件...在表中。

I want to use this field with cdomsg.AddAttachment ... I know that if I use "cdomsg.AddAttachment ("")" that I can attach a specific file path ... but I want to use the attachment field within Access. 我想在cdomsg.AddAttachment中使用这个字段...我知道如果我使用“cdomsg.AddAttachment(”“)”我可以附加一个特定的文件路径......但是我想在Access中使用附件字段。

Or is there a better way to do this? 或者有更好的方法吗? Any suggestions would be awesome, thanks! 任何建议都很棒,谢谢!

The CDO AddAttachment method needs to be given the location of the file to be attached, and it doesn't have any way of recognizing a reference to an Access table/field. 需要为CDO AddAttachment方法指定要附加的文件的位置,并且它无法识别对Access表/字段的引用。 Therefore you'll need to save the Access attachment to a temporary location using the SaveToFile method of an Access DAO Field2 object, and then pass the path of that file to the CDO AddAttachment method. 因此,您需要使用Access DAO Field2对象的SaveToFile方法将Access附件保存到临时位置,然后将该文件的路径传递给CDO AddAttachment方法。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM