ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

搬家第25天-Citect V7.4 CitectVBA 利用excel宏和CDO发邮件

2021-02-22 12:34:38  阅读:373  来源: 互联网

标签:25 V7.4 eul Citect 信箱 Item msg com 邮件


我们使用citect采集了现场数据形成报表后,有时候需要把数据定时发电子邮件给某些人。微软的CDO组件支持邮件发送功能,我在学习citectVBA发邮件时,经历了一些波折,我在这篇博客把这些学习过程下来。

      我的想法是点击画面上的按钮,后台脚本用一个qq信箱给一个126信箱发一封电子邮件,不需要打开浏览器登录信箱,也不需要打开outlook灯邮箱工具。

      首先呢,QQ信箱默认没有开通第三方工具发送邮件的功能,需要登录信箱设置一下。

点击设置后,选择“账户”,开通POP3/SMTP服务,qq信箱要设置这个服务需要通过手机发送短信来获取授权码,这个授权码一会需要用到。

第一次,我在cicode编辑器中用citectVBA写以下代码,运行没有效果,可以跳过这一步不看。

Sub VBASendmail()
    Dim msg As Object
    Dim eul As String
    Set msg = CreateObject("CDO.Message")
    msg.From = "12345@qq.com"  '发件人信箱
    msg.To = "54321@126.com"  '收件人信箱
    'msg.CC = "23456@126.com"                        '设置抄送的邮箱
    'msg.BCC = "34567@126.com"                       '设置密送的邮箱
    msg.Subject = "这是一份测试邮件"
    msg.textbody = "这是测试邮件正文"
   msg.AddAttachment "c:\path.txt"  '附件
    eul = "http://schemas.microsoft.com/cdo/configuration/"
    With msg.Configuration.Fields
       .Item(eul & "smtpserver") = "smtp.qq.com"
       .Item(eul & "smtpserverport") = 465 'SMTP端口号
       .Item(eul & "sendusing") = 2  '端口号
       .Item(eul & "smtpauthenticate") = 1 '需要用户名和密码
       .Item(eul & "smtpusessl") = 1        
       .Item(eul & "sendusername") = "12345@qq.com" '发件人信箱
       .Item(eul & "sendpassword") = "asdfghjklqwertyu" '这个是授权码,就是前面发手机短信生成的        
       .Item(eul & "smtpconnectiontimeout") = 60
       .Update        
    End With
   msg.Send
    Set msg = Nothing   
End Sub

第一次尝试失败后,我在excel文件sendmail.xlsm中建立宏,把上述代码拷贝进去,然后运行宏,成功了。先在的问题就变成了,在citectVBA中调用excel宏,后台运行发邮件。

在cicode中建立以下CitectVBA代码

Sub RunExcelMacroSendMail()
Dim xlApp As Object
Dim xlwb As Object
Set xlApp=CreateObject("excel.application")
xlApp.Visible=false
Set xlwb = xlapp.WorkBooks.Open("D:\CitectPrj\VBATest\sendmail.xlsm") '带有宏的excel文件路径
xlApp.run "VBASendmail" '发送邮件的宏的名字
xlwb.Close

Set objwb=nothing
xlApp.Quit
Set xlApp=Nothing
End Sub

在画面上添加一个按钮,按钮的鼠标点击事件中写入

civba call RunExcelMacroSendMail()

保存编译运行,点击按钮就能发送邮件了。发送邮件的功能测试好之后,结合报表自动导出为文件,设定事件定时运行citectvba程序,就能定时自动发送邮件了。

标签:25,V7.4,eul,Citect,信箱,Item,msg,com,邮件
来源: https://www.cnblogs.com/fishingsriver/p/14429463.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有