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)
- 【Access高效办公】上一年...(10.30)
- Access制作的RGB转CM...(09.22)
- Access制作的RGB调色板...(09.15)
- Access制作的快速车牌输入...(09.13)
- 【Access高效办公】统计当...(06.30)
- 【Access高效办公】用复选...(06.24)
- 根据变化的日期来自动编号的示例...(06.20)
- 【Access高效办公】按日期...(06.12)
- 合并列数据到一个文本框的示例;...(05.06)
 
  学习心得
最新文章
- 【Access高效办公】上一年度累...(10.30)
- Access做的一个《中华经典论语...(10.25)
- Access快速开发平台--加载事...(10.20)
- 【Access有效性规则示例】两种...(10.10)
- EXCEL表格扫描枪数据录入智能处...(10.09)
- Access快速开发平台--多行文...(09.28)
- 关于从Excel导入长文本数据到A...(09.24)
- Access制作的RGB转CMYK...(09.22)
- 关于重装系统后Access开发的软...(09.17)
- Access制作的RGB调色板示例(09.15)
 

 
  
.gif)

 
            