前一段时间公司在发送每个人工资条时感觉浪费时间,本人就试了一下用excel发送每个人的工资条,简单设计了一个运行后可以实现。操作过程为:点按钮运行宏——excel自动在相应位置创建新的工资表,以各个人员命名,并将原工资表中的标题行及工资内容复制到新建的工资表中——通过outlook实现发送到相应人员工资表。步骤如下:
一、将outlook与用的个人邮箱连接起来。
二、excel宏制作前的准备:1、将需要发送的邮箱收集并复制到相应位置,在此设置到每个人工资的最后
一列;2、在一个盘里面设置一个空文件夹,并在每次发送好邮件时将文件夹里面的内容清空,在此设置
为e:\个人工资。
三、在excel中新建一个宏,代码如下:
Sub 发送每个人的工资条()
Dim intRow1, b As Integer
Dim a As String
Dim OutlookApp As Object
Dim MailItem As Object
Windows("发送工资条.xlsm").Activate
intRow1 =
Worksheets("工资条").Range("c3").CurrentRegion.Rows.Count
For b = 3 To
intRow1
a = Cells(b, 3)
Workbooks.Add
ChDir "e:\个人工资"
ActiveWorkbook.SaveAs
Filename:="e:\个人工资\" & a & ".xlsx", FileFormat:= _
xlOpenXMLWorkbook, CreateBackup:=False
Windows("发送工资条.xlsm").Activate
Range("A2:z2").Select
Selection.Copy
Windows(a & ".xlsx").Activate
ActiveSheet.Paste
Application.CutCopyMode =
False
Windows("发送工资条.xlsm").Activate
Worksheets("工资条").Range(Cells(b, 1), Cells(b,
26)).Select
Selection.Copy
Windows(a & ".xlsx").Activate
Range("A2").Select
ActiveSheet.Paste
ActiveSheet.Paste
ActiveWorkbook.Save
ActiveWindow.Close
Windows("发送工资条.xlsm").Activate
Set OutlookApp =
CreateObject("Outlook.Application")
Set MailItem =
OutlookApp.CreateItem(0)
MailItem.To = Cells(b,
27)
'收件人
MailItem.cc = Cells(1,
2)
'抄送
MailItem.Subject =
Cells(1, 3)
'主题
MailItem.Body = Cells(1,
4)
'正文
MailItem.Attachments.Add
Sheets("工资条").Cells(b, 28).Value
'附件 路径
MailItem.Send
Set OutlookApp =
Nothing
Set MailItem =
Nothing
Next
End Sub
四、参考图补充细节
加载中,请稍候......