妙用EXECEL与JMAIL发送员工工资条

妙用EXECEL与JMAIL发送员工工资条

在实际的工作当中,有许多小规模的单位总是采用EXCEL来做员工工资,因为EXCEL中有许多公式可以用,只填入当月变动的项目,扣税、最终实发工资等项目就自动计算出来了。做出工资了有好多单位财务人员不得不打印出来裁成小纸条再发给各员工,这样在人力和时间成本上都耗费不少。最近我单位财务人员对技术部门提出了这个问题,我们考虑后决定采用最简单最环保的方法:利用VBA在EXCEL中结合JMAIL组件做员工工资条发送系统,EXCEL工作簿中至少有两张表,一张是工资表,另一张是员工姓名与E-MAIL对照表。

发送到E-MAIL中的工资表可以有有两种形式:HTML形式;附件形式。因为有时候财务想把EXCEL另存成一个文件,里面只有对应员工的工资和一些备注,这种形式在另一篇文件中介绍,本文先介绍E-MAIL的内容为HTML形式的VBA方法。

该方法的原理:

A)用VBA在EXCEL中先把每位员工的工资做成HTML和表格,再加上表头,就是一位员工完整的工资。

B)找到每位员工对应的E-MAIL(员工的E-MAIL列表在EXCEL的另一张SHEET表中)。

C)调用JMAIL组件发送给每位员工,如果你愿意,还可以要求员工给你一张收条。

方法很简单,月底做完工资,财务工作人员执行一下宏,就OK了。不过在写宏的时候有一些要注意的问题,下面列出宏的所有源码,重点部分做出标识。

图例:

发送前在EXCEL中的工资表(部分):



发送后E-MAIL中的工资表(部分):



宏名是SendWage可以在单独的模块,也可以在ThisWorkbook中。

      Sub SendWage()	‘主程序
‘变量定义部分
Dim strTemp$, I%, J%, rowNum%, colNum%,
cName$, strEmail$, headNo%
Dim strHead1$, strHead2, strContent$, 
strTail$, strEtitle$, strEcontent$
Dim cellWidth As Long
headNo = 4    ‘指表头部分,真正的员工工资是从第5行开始
Sheets("sheet1").Select	 ‘选中工资表,默认是sheet1
'计算出行数,即有多少员工
I = headNo + 1
strTemp = Trim(Sheets("sheet1").Cells(I, 1).Value)
While Len(strTemp) > 0
I = I + 1
strTemp = Trim(Sheets("sheet1").Cells(I, 1).Value)
Wend
rowNum = I – 1
'计算出列数,即表头有多少项目
I = 1
strTemp = Trim(Sheets("sheet1").Cells(headNo, I).Value)
While Len(strTemp) > 0 Or Len(Trim(Sheets("sheet1")
.Cells(headNo - 1, I).Value)) > 0
I = I + 1
strTemp = Trim(Sheets("sheet1").Cells(4, I).Value)
cellWidth = cellWidth + Sheets("sheet1").Cells(4, I).Width
Wend
colNum = I – 1
'做表头部分,针对前四行做出表头部分,赋值给一个变量,所有员工共用
strHead1 = "<table border =1 width=" & cellWidth & ">"
strHead2 = "<tr>"
For I = 1 To colNum
strTemp = Trim(Cells(headNo, I).Value)
If Len(strTemp) = 0 Then
strHead2 = strHead2 & "<td width=" & Trim(str(Cells(headNo - 1, I)
.Width)) & ">" & Trim(Cells(headNo - 1, I).Value) & "</td>"
Else
strHead2 = strHead2 & "<td width=" & Trim(str(Cells(headNo - 1, I)
.Width)) & ">" & Trim(Cells(headNo, I).Value) & "</td>"
End If
Next
strHead2 = strHead2 & "</tr>"
'做表尾部分
strTail = "</table>"
'从第一个名字处开始发送
For I = headNo + 1 To rowNum
‘一定要用Replace函数把cName名字中的空格去掉,
因为有两个的员工有时候财务人员为了跟整齐,
容易写成“李  四”,这样可能会查找不到
cName = Trim(Replace(Cells(I, 2).Value, " ", ""))		
strEmail = findEmail(cName)	‘调用函数findEmail找到员工对应的E-MAIL
Sheets("sheet1").Select
strContent = "<tr>"
For J = 1 To colNum
strContent = strContent & "<td width=" & Trim(str(Cells(I, J).
Width)) & ">" & Trim(Cells(I, J).Value) & Trim(str(Cells(I, J)
.Comment.Text)) & "</td>"
Next
strContent = strContent & "</tr>"
‘E-MAIL的标题
strEtitle = cName & Format(Trim(Cells(2, 1).Value), "yyyy年mm月") & "工资条" 	
‘E-MAIL的正文
strEcontent = strtitle & "<br>" & strHead1 & strHead2 & strContent & strTail
‘调用JmailSend 函数发送E-MAIL
strTemp = JmailSend(strEtitle, strEcontent,
True, HtmlBody,strEmail, "zhm@chinaccm.com",
"gz", "192.168.10.2", "", "")
Next
End Sub


函数findEmail,在另一张表中遍历找到员工对应的E-MAIL

         Function findEmail(ByVal cName As String) As String
Dim I%, strTemp$
Sheets("email").Select	
‘对应的所有员工E-MAIL列表,只有两列,名字和E-MAIL
I = 1
strTemp = Trim(Cells(I, 1).Value)
While Len(strTemp) > 0
I = I + 1
strTemp = Trim(Cells(I, 1).Value)		
If strTemp = cName Then
findEmail = Trim(Cells(I, 2).Value)
Exit Function
End If
Wend
End Function

函数JmailSend,是调用了JMAIL组件

在EXCEL的菜单“工具”---“引用”对话框中选“JMAIL 4.0 LIBRARY”,就添加了引用。如果没有这一项,请安装JMail44_free,这是一个FREE的版本。

      Function JmailSend(attachFile, Subject,
Body, isHtml, HtmlBody, MailTo, From, 
FromName, Smtp, Username, Password)
'=================================================
'函数名:JmailSend
'作  用:用Jmail发送邮件
'参  数:Subject  邮件标题
'        Body     邮件内容
'        Body     邮件内容
'        isHtml   是否发送Html格式邮件 (true 是)
'        HtmlBody Html格式邮件内容
'    MailTo   收件人Email
'        From     发件人Email
'        FromName 发件人姓名
'        Smtp     smtp服务器
'        Username 邮箱用户名
'        Password 邮箱密码
'返回值:JmailSend="N" 发送失败 JmailSend="Y" 发送成功
'~~~~~~~~~~suercool~~~~~
'=================================================
Dim JmailMsg
'Set JmailMsg = server.CreateObject("jmail.message")
Set JmailMsg = New jmail.Message
JmailMsg.MailServerUserName = Username‘如果是在局域网中可以不要验证
JmailMsg.MailServerPassWord = Password
JmailMsg.AddRecipient MailTo
JmailMsg.From = From
JmailMsg.FromName = FromName
JmailMsg.Charset = "gb2312"
JmailMsg.ContentType = "text/html"
JmailMsg.Priority = 1
JmailMsg.Logging = True
JmailMsg.Silent = True
JmailMsg.Subject = Subject
JmailMsg.Body = Body
JmailMsg.AddAttachment = attachFile
If isHtml = True Then JmailMsg.HtmlBody = HtmlBody
If Not JmailMsg.Send(Smtp) Then
JmailSend = "N"
Else
JmailSend = "Y"
End If
JmailMsg.Close
Set JmailMsg = Nothing
'MsgBox (JmailSend)	‘测试时可以用
End Function



至此,完整的程序已介绍完毕。其实引发开去,如果有类似工作性质的东东,都可以用此种方法将各员工的记录发送到各员工的信箱中,节约了纸张,节省了人力和时间,何乐而不为。

利用VBA软件也是绿色环保软件,不用安装,代码随着文件走,没有在硬盘上造成垃圾,窃以为不错,不敢独享,献丑与大家共享。如果大家有什么疑问,可以发信到henrryzhang@mail.china.com,共同讨论求进步。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/36330.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用Excel做了7天报表,这个领导喜欢的可视化工具,只用了7小时

以前我在某外企银行实习的时候&#xff0c;需要处理将近七年的财务报表&#xff0c;如果按照传统的方式&#xff0c;我估计七天七夜都处理不完&#xff0c;就更别提分析了。一般来说外企的电脑软件限制非常严格&#xff0c;有专门的IT把控。很多软件是下不了的&#xff0c;即使…

员工每月工资数据集可视化分析

前言 最近在学习《从零开始学Python数据分析》这本书&#xff0c;第六章的综合实例——巴尔的摩公务员工资数据集&#xff0c;原网站上数据集被清除&#xff0c;于是在Kaggle上寻找了相似的数据“Employee_monthly_salary.csv”进行可视化数据分析。 工作环境 系统&#xff…

android app图标长按展示快捷方式 Shortcuts 类似3d touch

android 长按图标展示快捷方式 文章目录 android 长按图标展示快捷方式1. 静态创建2. 动态创建 首先&#xff0c;这不是一个新功能了&#xff0c;在android 7.1的时候就已经支持创建快捷入口了。因为当时项目用不到也没关注过这块&#xff0c;现在很多应用都支持长按展示快捷入…

苹果手机的计算机怎么设置快捷键大全,苹果Macbook快捷键使用大全,超详细!...

苹果电脑Macbook快捷键如何使用&#xff1f;很多小伙伴经常询问小编有关于苹果电脑的相关问题&#xff0c;其实很多快捷键都可以提高生产力&#xff0c;那么接下来一起看看苹果Macbook快捷键使用大全&#xff01; 苹果电脑Macbook快捷键大全&#xff1a; 一、将键盘当作鼠标使用…

最全Mac系统快捷键一览

Mac中主要有四个修饰键&#xff0c;分别是Command&#xff0c;Control&#xff0c;Option和Shift。 这四个键分别有自己的图案&#xff0c;他们经常出现在Mac应用程序中的菜单栏里&#xff0c;方便你随时学习新的快捷键。 MAC 键盘快捷键符号图例 通用 Command是Mac里最重要的…

苹果Macbook快捷键使用大全

苹果电脑Macbook快捷键如何使用&#xff1f;很多小伙伴经常询问小编有关于苹果电脑的相关问题&#xff0c;其实很多快捷键都可以提高生产力&#xff0c;那么接下来一起看看苹果Macbook快捷键使用大全&#xff01; 苹果电脑Macbook快捷键大全&#xff1a; 一、将键盘当作鼠标使用…

消除macbook桌面快捷键图标上的箭头

修改/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/ 路径下的AliasBadgeIcon.icns如下图&#xff1a; 修改AliasBadgeIcon.icns 名称为AliasBadgeIcon-no.icns 但是坑爹的右键没有重命名选项 于是想着在终端修改文件名 打开终端sudo -i切换到root模…

iOS APP添加桌面快捷方式

本文字数&#xff1a;13900字 预计阅读时间&#xff1a;35 分钟 iOS APP添加桌面快捷方式 背景 新接到一个需求&#xff0c;需要APP内的某些功能&#xff0c;能够把入口添加到桌面&#xff0c;点击桌面到入口可以直接跳转APP对应界面&#xff08;类似于下面这张示例图&#xff…

mac快捷键标志 ,图案,图标, 常用快捷键

Mac中主要有四个修饰键&#xff0c;分别是Command&#xff0c;Control&#xff0c;Option和Shift。这四个键分别有自己的图案 . Command-Z 撤销  Command-X 剪切   Command-C 拷贝&#xff08;Copy&#xff09;   Command-V 粘贴   Command-A 全选&#xff08;All&…

ShortcutManager桌面app图标长按快捷入口

1.动态方式实现 1.kotlin版代码 1.1 直接实现 对应代码&#xff1a; fun shortcut(){if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.N_MR1) {val scManager: ShortcutManager getSystemService(ShortcutManager::class.java)//跳转Secondval…

MAC OSX 快捷方式更换图标

1、MAC OSX快捷方式创建图标 右键快捷方式——显示简介 将你的icon图片文件&#xff08;大小为128x128像素&#xff09;拖入当前图标位置 2、修改你的icon图标文件 有时你会需要让你的桌面图标看起来更加统一&#xff0c;这时你就需要修改你的图标 打开PS&#xff0c;新建1…

正大国际期货:用狼性思维参与外盘期货

投资源于生活&#xff0c;而生活启示了投资交易的方法。因为我们知道在地球上&#xff0c;除了人类&#xff0c;狼应该是最聪明智慧的动物了&#xff0c;那么在狼的智慧中&#xff0c;有怎样的期货投资启示呢&#xff1f;下面正大IxxxuanI详细给大家讲解一下&#xff01; 1、当…

欧元区通胀率升至9.1% 将跟随美联储“鹰派”步伐?如何使资产保值成为现实需要

欧盟统计局数据显示&#xff0c;由于能源和食品价格持续飙升&#xff0c;欧元区8月调和CPI同比上升9.1%&#xff0c;距离两位数通胀近在咫尺。 伴随着通胀数据屡创新高&#xff0c;摩根大通、高盛和美国银行的分析师均预计&#xff0c;欧央行将在下周的会议上加息75个基点&…

外汇天眼:美联储认为美国房价有大跌的风险!

美联储周五表示&#xff0c;在超低利率的背景下&#xff0c;近年来房价大幅上涨后&#xff0c;高位房价可能会急剧下跌。 “由于估值处于高位&#xff0c;房价可能对冲击特别敏感&#xff0c;”美联储在周五发布的半年度金融稳定报告中表示。 央行表示&#xff0c;尽管最近随…

股票和外汇究竟哪个更存在风险呢?

股票和外汇究竟哪个更存在风险呢&#xff1f; 1、股票T1交易制度&#xff0c;今天买入&#xff0c;明天才能卖出&#xff1b;外汇T0交易制度&#xff0c;随时买入&#xff0c;随时可以卖出。流动性方面看&#xff0c;外汇风险较小。 2、外汇手续费很低&#xff0c;只有买入时扣…

外汇天眼:美元多头仍在掌控中 美联储将加大鹰派立场力度

美元多头不太可能在短期内被推翻&#xff0c;因为美联储(fed)可能会在其普遍预期的加息之后&#xff0c;在本周发表强硬言论&#xff0c;这可能迫使交易员重新考虑利率在见顶前能达到多高。 衡量美元兑一篮子六种主要货币贸易加权汇率的美元指数下跌0.1%&#xff0c;至109.44点…

外汇天眼:美国中期选举共和党若大获全胜!美元未来走势不利

周二&#xff0c;美元企稳&#xff0c;因为交易员们展望美国中期选举&#xff0c;而中国放松对冠状病毒的限制的兴奋情绪有所减弱&#xff0c;这一直在提振投资者人气&#xff0c;并令避险的美元承压。 中期选举的最终结果可能需要几天的时间&#xff0c;但预测显示&#xff0c…

外汇天眼:利空美元!2023年美国经济将如履薄冰?各大银行预测整体不乐观!

高盛表示&#xff0c;美国经济可能避免衰退。摩根士丹利预计&#xff0c;美国经济在2023年只是避开了衰退&#xff0c;但着陆并不那么软。瑞士信贷认为&#xff0c;美国明年可以避免经济下滑。摩根大通警告称&#xff0c;明年很有可能出现经济衰退。美国银行预测2023年第一季度…

理财实践之港股和美股的投资办法、下篇

文章目录 一、美股投资的主要风险有&#xff1a;二、投资美股的注意事项三、选出好公司四、等待好价格五、举例 一、美股投资的主要风险有&#xff1a; 市场风险 – 因股市价格大幅下跌导致股票投资者亏损的风险。这是很正常的市场行为&#xff0c;对于普通投资者来说这是风 …

chatGPT人工智能系统软件开发

ChatGPT是一个由OpenAI开发的人工智能语言模型&#xff0c;可以实现自然语言处理、对话生成等功能。要开发一个类似ChatGPT的人工智能系统软件&#xff0c;可以遵循以下步骤&#xff1a; 确定应用场景&#xff1a;确定人工智能系统软件要解决的问题和应用场景&#xff0c;例…