需求
采购订单在ES中生成,审批后需要把本表导出成pdf或excel发送给供应商。
基本思路
-
ES本身没有这种功能,据说高版本有,但估计也不能导出pdf。
-
所以实现必须借助vba,office2007+版本有pdf插件或自带pdf插件,可以另存pdf,然后通过vba发送给smtp邮件服务器,按照这个思路即可实现。
示例模板
VBA代码
- 加入VBA代码,实现自动转存pdf和发邮件,示例会同时发送pdf和excel版。
Sub send()
Dim NameSpace$, Email As Object, mypath$
' 本表另存pdf
On Error Resume Next
Application.ScreenUpdating = False ' 关闭屏幕刷新
If Application.Version < 12 Then
MsgBox "此功能用于Excel2007以上"
Exit Sub
End If
mypath = ThisWorkbook.Path
'VBA.MkDir (mypath & "/PDF")
' 导出pdf
ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:=mypath & "\" & ThisWorkbook.Name & ".pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
' 另存xls
Set NewBook = Workbooks.Add
Sheet2.Range("a:d").Copy NewBook.Worksheets("sheet1").Range("a:d") '复制A:D列
NewBook.SaveAs Filename:=mypath & "\" & ThisWorkbook.Name & "-副本" & ".xls"
NewBook.Close SaveChanges:=True '关闭文件
Application.ScreenUpdating = True ' 打开屏幕刷新
' 发送准备工作
NameSpace = "http://schemas.microsoft.com/cdo/configuration/"
Set Email = CreateObject("CDO.Message")
Email.From = Sheet2.Range("g2") ' 发件人邮箱=“辅助工作表”G2
Email.To = Sheet2.Range("g5") ' 要发往的地址=“辅助工作表”D列
Email.Subject = Sheet2.Range("g4") ' 标题=“辅助工作表”G4
Email.Textbody = Sheet2.Range("g6") ' 正文=“辅助工作表”C列+G6
Email.AddAttachment mypath & "\" & ThisWorkbook.Name & ".pdf" '添加附件
Email.AddAttachment mypath & "\" & ThisWorkbook.Name & "-副本" & ".xls" '添加附件
With Email.Configuration.Fields
.Item(NameSpace & "smtpusessl") = 0 ' 是否启用ssl
.Item(NameSpace & "sendusing") = 2
.Item(NameSpace & "smtpserver") = "smtp.163.com" ' 发送邮件服务器
.Item(NameSpace & "smtpserverport") = "25"
.Item(NameSpace & "smtpauthenticate") = 1
.Item(NameSpace & "sendusername") = Sheet2.Range("g2") ' 发件人邮箱
.Item(NameSpace & "sendpassword") = Sheet2.Range("g3") '发件人密码
.Update
End With
Email.send ' 发送
MsgBox "文件已经发送完成。"
Kill mypath & "\" & ThisWorkbook.Name & ".pdf" '删除所有的已经发送的附件
Kill mypath & "\" & ThisWorkbook.Name & "-副本" & ".xls" '删除所有的已经发送的附件
End Sub
配合ES
可以通过提数自动获取供应商对应的邮箱,通过回写记录发送历史。
Excel示例下载表格
贡献人
@挨踢熊 @毛毛
更多精彩功能请关注我们^_^
村长点评:Nx中可以直接将本表转pdf存入字段,然后调用邮件发送,原生支持。