办公自动化之-通过Excel自动发送电子邮件
工作中经常碰到一边要在Excel中记录日常事项,一边又得重复的把这些事项通过邮件通知给合作客户,其他部门,供应商等。而且邮件所需格式与Excel记录格式又不一致,这样就得每天反复手工输入拷贝相关内容。烦,烦,烦!无聊,无聊,无聊!
怎么办呢,其实Excel是可以有特技的!Duang,Duang,Duang, 特技一键搞定你的烦恼。
让我们以常用的出货通知为例来感受非同一般的EXCEL邮件一键发送特技吧!
操作方法
(01)创建一个名字为“出货清单”Excel表单,先制作一个出货记录表格。您可按需要自行制作,做成一行一条目。在正常内容最后加一行用于选择是否需要自动发送邮件。
(02)再增加一个名字为"清单"的Excel表单。用于列举各项常用重复内容。例子中列举出货地址清单,联系人联系方式清单,还有料号清单。
(03)对各个清单定义范围。这里以PNlist 命名来定义举一例,各位可按需定义。料号清单范围定义 =清单!$G$2:OFFSET(清单!$G$1,COUNTA(清单!$G:$G)-1,0)COUNTA(清单!$G:$G) 是用于计算G列有多少行有内容,即有多少个P/N清单。 例子计算结果为4OFFSET($G$1,4-1,0)计算结果即为$G$4.所以PNlist 就被成功定义为=清单!$G$2:$G$4定义地址清单:Addresslist =清单!$A$2:offset($A$1,counta($A:$A)-1,1)定义联系人清单:Namelist =清单!$D$2:OFFSET(清单!$D$1,COUNTA(清单!$D:$D)-1,1)
(04)通过定义的清单来校验数据, 从而保证误输入。通过下来选择也可提高效率。
(05)新建一个名为“模板”的Excel表单,定义要通过邮件发送的内容的模板。后续会通过宏来拷贝模板,填充内容,调用outlook发送。注意。 模板请放在第一行以下,因为第一行会用与拷贝发送内容过来做转制。
(06)按如下图片步骤录制一个名为"shipment"的宏。宏的录制是录制单条操作的内容,操作内容根据自己需要按步骤录制。多条循环操作需稍微加几句代码。下一步骤会介绍。如下代码供参考:Sub shipment()' shipment arrangement'如下为录制内容Sheets("出货记录")ctRange("B3:I3")opyMode = Sheets("邮件模板")ctRange("A1")eSpecial Paste:=xlPasteValues, Operation:=xlNone,SkipBlanks _:=False, Transpose:=FalseRange("G3:H12")opyMode = Range("A3")rt Shift:=xlDownRange("B3")opyMode = ulaR1C1 = "=R[-2]C[-1]"Range("B4")ulaR1C1 = "=R[-3]C[1]"Range("B5")ulaR1C1 = "=R[-4]C[2]"Range("B6")ulaR1C1 = "=R[-5]C"Range("B7")ulaR1C1 = "=R[-6]C[4]"Range("B8")ulaR1C1 = "=R[-7]C[5]"Range("B9")ulaR1C1 = "=R[-8]C[3]"Range("B10")ulaR1C1 = "=R[-9]C[6]"Range("B3:B10")eSpecial Paste:=xlPasteValues, Operation:=xlNone,SkipBlanks _:=False, Transpose:=FalseRange("A1:H1")opyMode = rContentsSheets("出货记录")ctRange("J3")ulaR1C1 = "Closed"Range("A3:J3")ctRange("J3")vateWith ern = ernColorIndex = eColor = AndShade = ernTintAndShade = 0End With'如上为录制内容End Sub
(07)打开录制的宏添加循环代码。按图片步骤及语句在录制范围前后添加循环代码。Dim i As IntegerDim j As IntegerDim g As enUpdating = FalseSheets("出货记录")cti = 1j = tA(Range("A:A")) + 1g = 0'变量i 用于循环,变量j用于判断有多少行需要循环,变量g 用于邮件发送时定义有多少行需要发送For i = 1 To jIf Range("j" & i)e = "Y" Then'如下为录制内容-------------'如上为录制内容g = g + 1ElseEnd IfNext i
(08)录制范围部分代码需按图片更新成变量。
(09)再添加邮件发送代码,其中有定义一个名为的 RangetoHTML()的函数。' 以下语段用于发送邮件Sheets("出货记录")ctIf g = "0" ThenMsgBox "No new shippment set to Y "Elseg = 10 * g + 2Dim OutApp As ObjectDim OutMail As ObjectDim MailBody As RangeSheets("邮件模板")ctSet MailBody = Range("A3:B" & g)Set OutApp = CreateObject("ication")Set OutMail = teItem(olMailItem)On Error Resume NextWith = " = "" = ""ect = "Shipment Arrangement"Format = Body =(MailBody)layEnd WithOn Error GoTo 0End IfSheets("出货记录")enUpdating = True
(10)RangetoHTML()的函数 代码申明将如下代码拷贝粘帖到End Sub()之后Public Function RangetoHTML(rng As Range)Dim fso As ObjectDim ts As ObjectDim TempFile As StringDim TempWB As WorkbookTempFile = Environ$("temp") & "/" & Format(Now, "dd-mm-yy h-mm-ss") & ""Set TempWB = (1)With ts(1)s(1)eSpecial Paste:=s(1)eSpecial xlPasteValues, , False, s(1)eSpecial xlPasteFormats, , False, s(1)opyMode = FalseOn Error Resume ble = teOn Error GoTo 0End WithWith ( _SourceType:=xlSourceRange, _Filename:=TempFile, _Sheet:=ts(1), _Source:=ts(1)ess, _HtmlType:=xlHtmlStatic)ish (True)End WithSet fso = CreateObject("SystemObject")Set ts = ile(TempFile)AsTextStream(1, -2)RangetoHTML = eRangetoHTML = Replace(RangetoHTML, "align=centerx:publishsource=", _"align=left x:publishsource=")e savechanges:=FalseKill TempFileSet ts = NothingSet fso = NothingSet TempWB = NothingEnd Function
(11)代码完成。 只需创建一个按钮方便调用此宏即可。
(12)增加条目后把对应行内邮件通知列改成"Y",然后点“发送邮件”按钮即可弹出邮件并出货通知表单内更改状态。
特别提示
最好是有一定的VBA基础,没有就仔细看里面的公式就能明白什么意思。
如果觉得本给您带来一点帮助或启发,请点页面右上角大拇指及五角星图标。感谢感谢!
-
合伙做生意我们要注意的问题
合伙做生意对于那些没干爹,不是富,官二代的年轻人人来说,实在是在合适不过的了,不仅可以体验创业,学习,还可以分摊大家的资金风险。是广大草根非常喜欢的创业模式。但是有好就有坏,在合伙之前我们会有哪些问题要处理呢?又要避免那些那些问题的发生呢? 下面小编给大...
-
word如何自动生成目录?
在工作和生活中,总会用到word,这个万能的文字编辑器,每个长一些的文档都需要有一个目录,那样查找起来会比较方便,然而,现在我发现还有好多人制作的文档目录是手打上去的,那太古老、太死板、太不现代化啦,word的功能非常强大,下面我讲一下如何用word自动生成目录:操作方法...
-
企业彩铃集团彩铃怎么办理|申请|开通|制作
企业彩铃集团彩铃怎么办理|申请|开通|制作(01)企业集团彩铃”是运营商推出的一项手机,电话回铃音增值服务。(其他的介绍这里就不详细讲了)。当企业负责人,个体户等客户朋友们想要给自己的手机,座机办理开通彩铃时,就有很多疑虑:(1)公司彩铃怎样才能申请。(2)公司企业彩铃到...
-
CAD图块如何编辑?CAD图块编辑方法?
本文主要讲述在CAD中图块如何进行编辑的过程,通过学习来掌握此方法的使用技巧。操作方法(01)首先通过原有图纸并进行打开,如下图所示。(02)图中图形为块模式,通过选择当前图形在特征中进行查看,如下图所示。(03)通过双击该图块弹出编辑块定义点击确定即可,如下图所示。(04)...