Excel批量发送电子工资条-欢乐小爪
Access软件网QQ交流学习群(群号码198465573),欢迎您的加入!
首页 >技术文章> Access数据库-模块/函数/VBA


Excel批量发送电子工资条

发表时间:2011/10/9 11:47:07 评论(3) 浏览(12650)  评论 | 加入收藏 | 复制
   
摘 要: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群(群号:198465573)
 
 相关文章
按输入编号批量添加相近记录  【trnew  2009/9/4】
BAT实现类库及控件批量注册方法  【江羽  2010/10/20】
递增编号批量写入  【在水一方  2012/8/17】
批量打印工作证示例,工作证报表打印,带照片的工作证标签打印,工作牌...  【听风  2012/11/30】
【Access小品】替换批量Word文件中的字符串示例  【煮江品茶  2013/4/27】
常见问答
技术分类
相关资源
文章搜索
关于作者

欢乐小爪

文章分类

文章存档

友情链接