Office中国论坛/Access中国论坛

标题: 通过access一次性将收件人的地址写进outlook收件人中 [打印本页]

作者: yanwei82123300    时间: 2015-3-9 12:29
标题: 通过access一次性将收件人的地址写进outlook收件人中
我们公司有一个ACCESS的NCR(不合格品报告)系统,一直在使用但是最近发现一个问题:需要将此报告发给一些相关人员(收件人)(通过OUTLOOK)但是需要一个一个的写邮件地址,请问如何才能做到将数据库中添加一个邮箱地址表,一次性的就可以写进收件人邮箱.谢谢!
作者: 站到终点站    时间: 2015-3-9 12:30
看看是不是这个效果

作者: 半点    时间: 2015-3-9 12:44
好像以前老王高码课里有这么一课。
作者: yanwei82123300    时间: 2015-3-9 13:13
半点 发表于 2015-3-9 12:44
好像以前老王高码课里有这么一课。

有例子吗?
作者: laimf    时间: 2015-3-9 14:44
邮箱地址表中再添加一个“是否选中收件人“的是否字段,在发邮件的时候,选中的联系人地址写入收件人地址,从而实现批量发邮件。
还有一法:表不改动,窗体上也不用写多余的代码,使用组合框(新版accdb组合框本身带有这功能)设置,实现联系人地址多选。
作者: yanwei82123300    时间: 2015-3-9 14:52
直接写代码将收件人的地址直接加到OUTLOOK的收件人中
作者: yanwei82123300    时间: 2015-3-9 14:57
公司写的代码,可以将数据直接写到新邮件中

Private Sub cmdEmail_Click()
On Error GoTo Err_cmdEMail_Click
   
    Dim PartDisposition As Variant
    Select Case Me.Disposition
    Case 1
        PartDisposition = "Rework"
    Case 2
        PartDisposition = "Use As Is"
    Case 3
        PartDisposition = "Scrap"
    Case 4
        PartDisposition = "Return for Credit"
    Case 5
        PartDisposition = "Inventory Issue"
        
    End Select
   
    If Me![txtMIDNumber] <> "" Then
        DoCmd.SendObject , , , , , , "Please review NCR # " & Me.MIDNumber, _
        "NCR Number = " & Me.MIDNumber & vbCrLf & _
        "Part Number = " & Me.PartNumber & vbCrLf & _
        "Part Description = " & Me.PartDescription & vbCrLf & _
        "Casting Number = " & Me.CastingNumber & vbCrLf & _
        "Casting Description = " & Me.CastingDescription & vbCrLf & _
        "WO/PO Number = " & Me.WONumber & vbCrLf & _
        "NCR Disposition = " & PartDisposition & vbCrLf & _
        "Vendor = " & Me.VendorName & vbCrLf & _
        "Quantity = " & Me.Quantity & vbCrLf & _
        "Comments :" & vbCrLf & _
        Me.MIDInformation & vbCrLf & _
        vbCrLf & "Manufacturing Comments :" & vbCrLf & _
        Me.ManufacturingNotes & vbCrLf & _
        vbCrLf & "Production Comments :" & vbCrLf & _
        Me.ProductionNotes & vbCrLf & _
        vbCrLf & "Purchasing Comments :" & vbCrLf & _
        Me.PurchasingNotes & vbCrLf & _
        vbCrLf & "Warehouse Comments :" & vbCrLf & _
        Me.WarehouseNotes & vbCrLf & _
        vbCrLf & "Additional Comments :" & vbCrLf & _
        Me.AdditionalComments

    Else
        MsgBox "Select MID # first", vbCritical, "Error"
    End If
Exit_cmdEMail_Click:
    Exit Sub
Err_cmdEMail_Click:
    MsgBox "E-Mail is currrently not working. Try again later", vbCritical
    Resume Exit_cmdEMail_Click
End Sub
请看附件图片,点击邮件图标(图1)直接写的OUTLOOK中(图2),再添加收件人
请大家看看是否可以添加收件人
作者: 站到终点站    时间: 2015-3-9 15:41
看下SendObject方法的参数你就知道怎么设置收件人跟抄送了。不过你界面里面也需要设置一个。第4个参数是收信人
第5个参数是抄送的

语法
表达式.SendObject(ObjectType, ObjectName, OutputFormat, To, Cc, Bcc, Subject, MessageText, EditMessage, TemplateFile)
表达式   一个代表 DoCmd 对象的变量。
参数
名称必选/可选数据类型说明
ObjectType可选AcSendObjectTypeAcSendObjectType 常量,指定要发送的对象的类型。
ObjectName可选Variant[url=]字符串表达式 (字符串表达式:任一求值为一列连续字符的表达式。表达式的元素可以是:返回字符串或字符串 Variant (VarType 8) 的函数;字符串字面值、常量、变量或 Variant。)[/url],表示 objecttype 参数所选类型的对象的有效名称。如果要在邮件中包括活动对象,请使用 objecttype 参数指定对象的类型,并将该参数保留为空。如果将 objecttypeobjectname 参数都保留为空(对于 objecttype 参数,采用默认常量 acSendNoObject),Microsoft Access 将向电子邮件应用程序发送邮件,但不包括数据库对象。如果您运行的 Visual Basic 代码包含了[url=]类库数据库 (类库数据库:可以从任意应用程序中调用的过程和数据库对象的集合。为了使用库中的项,必须先建立从当前数据库到类库数据库的引用。)[/url]中的 SendObject 方法,Microsoft Access 先在这个类库数据库中查找此名称的对象,然后在当前数据库中查找。
OutputFormat可选Variant
To可选Variant字符串表达式,列出名称要放在邮件的“收件人”行中的收件人。用分号 (;) 或列表[url=]分隔符 (分隔符:用来分隔文本或数字单元的字符。)[/url](在 Windows 控制面板的“区域设置属性”对话框的“数字”选项卡中设置)分隔在该参数及 ccbcc 参数中指定的收件人名称。如果收件人名称不能被邮件应用程序识别,那么将不会发送该邮件并将产生错误。如果将该参数保留为空,Microsoft Access 会提示您输入收件人。
Cc可选Variant字符串表达式,列出名称要放在邮件“抄送”行中的收件人。如果将该参数保留为空,则邮件中的“抄送”行也将为空。
Bcc可选Variant字符串表达式,列出名称要放在邮件“密件抄送”行中的收件人。如果将该参数保留为空,则邮件中的“密件抄送”行也将为空。
Subject可选Variant字符串表达式,包含要放在邮件“主题”行中的文本。如果将该参数保留为空,则邮件中的“主题”行也将为空。
MessageText可选Variant字符串表达式,包含要包括在邮件正文中、且位于该对象后面的文本。如果将该参数保留为空,则对象是邮件正文中包含的全部内容。
EditMessage可选Variant使用 True (-1) 将立即打开电子邮件应用程序并加载邮件,这样就可以编辑邮件。使用 False (0) 将不进行编辑就发送邮件。如果将该参数保留为空,将采用默认值 (True)。
TemplateFile可选Variant字符串表达式,表示用作 [url=]HTML (HTML:万维网文档所用的标准标记语言。HTML 使用标记来指定 Web 浏览器对文字和图形等网页元素的显示方式以及对用户操作的响应方式。)[/url] 文件的模板文件的完整名称(包括路径)。





作者: laimf    时间: 2015-3-9 16:14
界面上添加一个“to”组合框,源内容为联系人,设置组合框多选代码实现方法:(在网站中随便搜了一下,Trynew 老师写的组合框多选代码出来了。)
Public Function MultComb()
Dim i As Integer, strList As String
     With Screen.ActiveControl
         For i = 1 To .ListCount
             strList = IIf(Nz(strList) = "", "", strList & ";") & .ItemData(i)
         Next
         If InStr(1, .Tag, .Text) = 0 And InStr(1, strList, .Text) > 0 Then
             .Value = IIf(Nz(.Tag) = "", "", .Tag & "、") & .Text
         End If
         .Tag = .Text
     End With
End Function

再将值作为收件人地址,赋值就行了。
作者: tmtony    时间: 2015-3-9 16:57
以前有讲过使用Access自动控制Outlook批量发送邮件的课程培训
请看这里
http://www.access-cn.com/tvip/tvip3435.html
作者: 风中漫步    时间: 2015-3-9 17:03
给yan老师个建议:也考虑下shellexecute
作者: yanwei82123300    时间: 2015-3-10 08:15
各位老师我将例子放上来,请帮助改改,谢谢
作者: yanwei82123300    时间: 2015-3-10 12:34
麻烦各位老师,给看看,谢谢了
作者: yanwei82123300    时间: 2015-3-10 14:10
本帖最后由 yanwei82123300 于 2015-3-10 14:19 编辑
站到终点站 发表于 2015-3-10 13:37
看看是不是这个效果


站到终点站 谢谢您的帮助请问,怎样做到使用COMBOX控件进行筛选?,同时添加多个收件人?谢谢
作者: roych    时间: 2015-3-10 14:39
供参考。手头上没装Outlook,没法调试。
http://www.office-cn.net/forum.p ... look%2B%D3%CA%BC%FE

作者: yanwei82123300    时间: 2015-3-10 14:55
roych 发表于 2015-3-10 14:39
供参考。手头上没装Outlook,没法调试。
http://www.office-cn.net/forum.php?mod=viewthread&tid=50532&h ...

老师打开好像报错,谢谢
作者: 站到终点站    时间: 2015-3-10 16:28
要通过列表来添加多个收件人的话,你需要自己设计一个窗体,来返回选择的收件人,我这里是思路:
1、首先你得未数据库添加一个表,名为联系人表,至少要有一个联系人邮箱地址字段;
2、然后基于这个联系人邮箱地址字段自动生成一个数据表窗体,这个窗体作为联系人拾取器;
3、在那个收件人MailTo文本框右侧放一个按钮,单击按钮弹出一个联系人拾取器窗体;4、为联系人拾取器添加代码,通过设置按钮或者双击某行记录时将当前所选择这个联系人地址返回;
5、捕获这个返回的联系人地址字符串,将其添加到MailTo文本框中,当然添加前需要追加一个分号“;”,因为分号是多个联系人地址之间的分隔符;


作者: yanwei82123300    时间: 2015-3-10 16:41
站到终点站 发表于 2015-3-10 16:28
要通过列表来添加多个收件人的话,你需要自己设计一个窗体,来返回选择的收件人,我这里是思路:
1、首先 ...

站到终点站 老师明白您说的,但是我的难点:在联系人拾取器中通过点击选取收件人,但是如何往一个文本框中添加多个值,我暂时不会!,请看看,谢谢
作者: yanwei82123300    时间: 2015-3-10 16:41
难点在:
4、在那个收件人MailTo文本框右侧放一个按钮,单击按钮弹出一个联系人拾取器窗体;4、为联系人拾取器添加代码,通过设置按钮或者双击某行记录时将当前所选择这个联系人地址返回;
5、捕获这个返回的联系人地址字符串,将其添加到MailTo文本框中,当然添加前需要追加一个分号“;”,因为分号是多个联系人地址之间的分隔符尤其5点
作者: 站到终点站    时间: 2015-3-10 17:44
本帖最后由 站到终点站 于 2015-3-10 17:46 编辑

没有使用之前说的方式,我直接使用了复合框,单击右侧按钮,会出现一个复合框,选择一个邮件地址后,复合框自动隐藏
[attach]55855[/attach]

作者: yanwei82123300    时间: 2015-3-11 07:52
本帖最后由 yanwei82123300 于 2015-3-11 09:11 编辑
站到终点站 发表于 2015-3-10 17:44
没有使用之前说的方式,我直接使用了复合框,单击右侧按钮,会出现一个复合框,选择一个邮件地址后,复合框 ...


谢谢,
作者: laimf    时间: 2015-3-11 09:02
应该是需要引用outlook吧,邮件功能要集成到ACCESS中,最好还是模仿outlook界面和功能做。这样就可以保持在操作上的一致性。
作者: yanwei82123300    时间: 2015-3-11 09:14
laimf 发表于 2015-3-11 09:02
应该是需要引用outlook吧,邮件功能要集成到ACCESS中,最好还是模仿outlook界面和功能做。这样就可以保持在 ...

laimf 谢谢您的帮助!
作者: rainless_9    时间: 2015-3-25 22:14
我是直接附件形式发的




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3