Excel批量发送电子工资条
时 间:2011-10-09 11:47:07
作 者:欢乐小爪 ID:20149 城市:杭州
摘 要:Excel批量发送电子工资条
正 文:
新建模块1: 复制以下代码
Sub AutoMail()
On Error Resume Next
Dim rowCount As Long, colCount As Long, endRowNo As Long, r As Range
Dim arr()
Dim strdata As String, strtop As String
'Dim objOutlook As New Outlook.Application
'Set objOutlook = New Outlook.Application
'Dim objMail As MailItem
Set objOutlook = CreateObject("Outlook.Application")
'选定需发送的数据区域,第一行应为标题,第一列应为邮箱地址,最后一列为备注。
Set r = Selection
endRowNo = r.Rows.Count '取得需发送的数据区域行数和列数
colCount = r.Columns.Count - 1
ReDim arr(1 To 1, 2 To colCount) '根据选定的列数重新定义数组
arr = WorksheetFunction.Transpose(Range(r.Cells(1, 2), r.Cells(1, colCount))) '获取标题行
strtop = Join(WorksheetFunction.Transpose(arr), "</td><td>")
Erase arr '清空数组变量
For rowCount = 2 To endRowNo '获取数据行
arr = WorksheetFunction.Transpose(Range(r.Cells(rowCount, 2), r.Cells(rowCount, colCount)))
strdata = Join(WorksheetFunction.Transpose(arr), "</td><td>")
Set objMail = objOutlook.CreateItem(olMailItem)
With objMail
.To = Cells(rowCount, 1) '邮件接收人等于本行的第一列
.Subject = ActiveSheet.Name '邮件标题等于工作表的表名
'.Body = strtop & vbCrLf & s
.HTMLBody = "<table border=""1"" cellpadding=""2""><tr><td>" & strtop & "</td></tr>" & "<tr><td>" & strdata & "</td></tr></table>" & _
"<br><br><span style='font-size:14.0pt;font-family:楷体'> " & r.Cells(rowCount, colCount + 1) & "</span>"
'.Attachments.Add Cells(rowCount, 5)
'让outlook不显示提示
.Sensitivity = olPersonal
.Send
End With
Set objMail = Nothing
Erase arr
Next
Set objOutlook = Nothing
End Sub
新建模块2: 复制以下代码
Public XLCommandBar As String
Public XLMenu As String
Public XLMenuItem As String
Public NewMenuItem As String
Public NewMenuItemMacro As String
Private Sub Auto_Open()
' 给变量赋值
XLCommandBar = "Worksheet Menu Bar"
XLMenu = "工具(T)"
XLMenuItem = ""
NewMenuItem = "AutoMail"
NewMenuItemMacro = "OpenRobot"
''''''''''''''''''''''''''''''''''''''''''''''''''
Dim NewItem As CommandBarButton
' 删除当前菜单如果它存在(以防万一)
On Error Resume Next
Application.CommandBars(XLCommandBar).Controls(XLMenu).Controls(XLMenuItem).Controls(NewMenuItem).Delete
Application.CommandBars(XLCommandBar).Controls(XLMenu).Controls(NewMenuItem).Delete
On Error GoTo 0
'创建新的菜单项目
If XLMenuItem = "" Then
Set NewItem = Application.CommandBars(XLCommandBar).Controls(XLMenu).Controls.Add
Else
Set NewItem = Application.CommandBars(XLCommandBar).Controls(XLMenu).Controls(XLMenuItem).Controls.Add
End If
' 指定标题和运行宏名
With NewItem
.Caption = NewMenuItem
.OnAction = NewMenuItemMacro ' 这个过程在模块1中
.FaceId = 0 ' 按钮图符显示菜单项目文本
.BeginGroup = True '增加一个隔离条在菜单项目前
End With
Exit Sub
' 如果发生错误,告诉使用者
If Err <> 0 Then
MsgBox "An error occurred.", vbInformation
End If
End Sub
Sub Auto_Close()
' 在关闭工作薄或加载宏时执行此过程
' 它简单地移除菜单项目
On Error Resume Next
Application.CommandBars(XLCommandBar).Controls(XLMenu).Controls(XLMenuItem).Controls(NewMenuItem).Delete
Application.CommandBars(XLCommandBar).Controls(XLMenu).Controls(NewMenuItem).Delete
End Sub
Private Sub OpenRobot()
Call AutoMail
End Sub
使用方法:
选定需发送的单元格区域,其中第一行为标题,第一列为邮箱地址,最后一列为备注。
Office2003可以在菜单-工具下找到AutoMail,点击即会进行自动批量发送。
Office2007-2010可以在加载项里找到AutoMail,点击即会进行自动批量发送。
Access软件网官方交流QQ群 (群号:54525238) Access源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- 统计当月之前(不含当月)的记录...(03.11)
- 【Access Inputbo...(03.03)
- 按回车键后光标移动到下一条记录...(02.12)
- 【Access Dsum示例】...(02.07)
- Access对子窗体的数据进行...(02.05)
- 【Access高效办公】上月累...(01.09)
- 【Access高效办公】上月累...(01.06)
- 【Access Inputbo...(12.23)
- 【Access Dsum示例】...(12.16)

学习心得
最新文章
- 仓库管理实战课程(8)-商品信息功...(04.01)
- 仓库管理实战课程(7)-链接表(03.31)
- 仓库管理实战课程(6)-创建查询(03.29)
- 仓库管理实战课程(5)-字段属性(03.27)
- 设备装配出入库管理系统;基于Acc...(03.24)
- 仓库管理实战课程(4)-建表操作(03.22)
- 仓库管理实战课程(3)-需求设计说...(03.19)
- 仓库管理实战课程(2)-软件背景和...(03.18)
- 仓库管理实战课程(1)-讲师介绍(03.16)
- 统计当月之前(不含当月)的记录数怎...(03.11)