Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用VBA将Access附件字段作为CDO附件发送_Vba_Ms Access_Email Attachments_Cdo.message - Fatal编程技术网

使用VBA将Access附件字段作为CDO附件发送

使用VBA将Access附件字段作为CDO附件发送,vba,ms-access,email-attachments,cdo.message,Vba,Ms Access,Email Attachments,Cdo.message,我有以下代码: 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

我有以下代码:

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
选项比较数据库
专用子命令27_Click()
模糊fso,f
设置fso=CreateObject(“scripting.FileSystemObject”)
设置f=fso.OpenTextFile(“M:\讲师信函模板(典型).htm”)
InstructorText=f.ReadAll
f、 接近
设置f=无
设置fso=无
Dim数据库作为DAO.Database
Dim rs作为DAO.Recordset
将sql设置为字符串
作为字符串的Dim strWhere
Set db=CurrentDb()
sql=“选择Classes.ClassID,Grade.GradeID,Instructors.RiosaladoEmail,students.sLastName,students.sFirstName,Grade.Form,Grade.printfout FROM students internal JOIN(Classes internal JOIN)(Instructors.InstructorID=Grade上的Instructors internal JOIN Grade.[Instructor])Classes.ClassID=Grade.ClassID=Grade.ClassID上在students.StudentID=Grade.StudentID上,其中Grade.DateProcessed=Date()
Set rs=db.OpenRecordset(sql,dbOpenDynaset)
直到R.EOF为止
将类设置为字符串
将等级设置为字符串
将电子邮件设置为字符串
今天暗淡如弦
将斜线设置为字符串
第一个作为字符串
字符串形式
等级=卢比(“ClassID”)
等级=rs(“等级ID”)
电子邮件=rs(“RiosaladoEmail”)
sLast=rs(“sLastName”)
sFirst=rs(“sFirstName”)
表格=卢比(“表格”)
常数cdosensingpickup=1
常数cdosensingport=2
常数cdoAnonymous=0
常数cdoBasic=1
常数cdoNTLM=2
设置cdomsg=CreateObject(“CDO.Message”)
cdomsg.Subject=slat&“,”&sFirst&Class&Chr(32)&Form
cdomsg.FROM=“”
cdomsg.To=电子邮件
cdomsg.HTMLBody=InstructorText
cdomsg.AddAttachment
cdomsg.Configuration.Fields.Item_
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
'远程SMTP服务器的名称或IP
cdomsg.Configuration.Fields.Item_
("http://schemas.microsoft.com/cdo/configuration/smtpserver“”=“smtp.gmail.com”
'身份验证类型,无,基本(Base64编码),NTLM
cdomsg.Configuration.Fields.Item_
("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate“”=cdoBasic
'您在SMTP服务器上的用户ID
cdomsg.Configuration.Fields.Item_
("http://schemas.microsoft.com/cdo/configuration/sendusername“”=“MyEmail”
'您在SMTP服务器上的密码
cdomsg.Configuration.Fields.Item_
("http://schemas.microsoft.com/cdo/configuration/sendpassword“”=“MyPW”
'服务器端口(通常为25个)
cdomsg.Configuration.Fields.Item_
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465
'将SSL用于连接(False或True)
cdomsg.Configuration.Fields.Item_
("http://schemas.microsoft.com/cdo/configuration/smtpusessl“”=真
'连接超时(秒)(CDO尝试建立到SMTP服务器的连接的最长时间)
cdomsg.Configuration.Fields.Item_
("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60
cdomsg.Configuration.Fields.Update
发送
下一个
环
设置rs=无
Set db=Nothing
端接头
在查询中,字段“Grade.Printout”是一个Access附件字段,附带一个文件。。。在桌子上

我想将此字段与cdomsg.AddAttachment一起使用。。。我知道如果我使用“cdomsg.AddAttachment(“”),我可以附加一个特定的文件路径。。。但是我想使用Access中的附件字段


还是有更好的方法?任何建议都会很棒,谢谢

CDO AddAttachment方法需要指定要附加的文件的位置,并且它没有任何方法识别对访问表/字段的引用。因此,您需要使用Access DAO
Field2
对象的方法将Access附件保存到临时位置,然后将该文件的路径传递给CDO AddAttachment方法