网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
12月30日漏签0天
vba吧 关注:17,091贴子:66,918
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 0回复贴,共1页
<<返回vba吧
>0< 加载中...

我 喜欢的out look vba

  • 只看楼主
  • 收藏

  • 回复
  • cykkenny
  • 无名之辈
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

VBA开发第五讲-导出邮件到Excel,每个发件人一个Sheet
(如有问题,请联系dsd999@sohu.com)
需求:添加按钮,导出邮件到Excel,每个发件人一个Sheet。
Outlook2003测试通过。
Outlook2007没测试。
代码:
Private WithEvents vsoCommbandButton AsCommandBarButton
Private WithEventsvsoCommbandExportMailToExcel As CommandBarButton
Private Sub Application_Startup()
Call addTotalButton
End Sub
'增加工具栏
Sub addTotalButton()
On Error Resume Next
Dim vsoCommandBar As CommandBar
'得到要添加的工具栏
Set vsoCommandBar =Outlook.ActiveExplorer.CommandBars("ExcelClub")
'如果工具栏为空,则增加
If (vsoCommandBar Is Nothing) Then
Set vsoCommandBar =Outlook.ActiveExplorer.CommandBars.add("ExcelClub", msoBarTop)
'在工具栏上增加一个按钮
Set vsoCommbandExportMailToExcel =vsoCommandBar.Controls.add(1)
vsoCommbandExportMailToExcel.Caption ="ExportToExcel"
vsoCommbandExportMailToExcel.FaceId = 69
vsoCommbandExportMailToExcel.Style =msoButtonIconAndCaption
'显示增加的工具栏
vsoCommandBar.Visible = True
End If
End Sub
'增加的按钮(ExportToExcel)的执行
Private SubvsoCommbandExportMailToExcel_Click(ByVal Ctrl As Office.CommandBarButton,CancelDefault As Boolean)
'出现错误时下一句代码继续运行
On Error Resume Next
Dim xlApp As Object
Dim strPath As String
Dim objShell As Object
Dim objFolder As Object
On Error Resume Next
Set xlApp =CreateObject("Excel.Application")
If xlApp Is Nothing Then Exit Sub
SetobjShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder(0,"选择文件夹",0, 0)
If Not objFolder Is Nothing Then
strPath = CStr(objFolder.self.Path)
Else
Exit Sub
End If
Set objFolder = Nothing
Set objShell = Nothing
If Right(strPath, 1) <> "\"Then strPath = strPath + "\"
Dim myWorkbook As Object
Dim myWorksheet As Object
xlApp.DisplayAlerts = False
Set myWorkbook = xlApp.Workbooks.add
myWorkbook.sheets("sheet2").Delete
myWorkbook.sheets("sheet3").Delete
DimobjOutlook As New Outlook.Application
SetmyNameSpace = objOutlook.GetNamespace("MAPI")
Set myFolder =myNameSpace.GetDefaultFolder(olFolderInbox)
Dim objItem As Outlook.mailItem
Dim d1, d2
Dim iSheetIndex As Integer
Set d1 =CreateObject("Scripting.Dictionary")
Set d2 =CreateObject("Scripting.Dictionary")
iSheetIndex = 1
Dim sText As String
Dim iLastRow As Integer
For Each objItem In myFolder.Items
sText = objItem.SenderName
If iSheetIndex = 1 Then
myWorkbook.sheets(1).Name = sText
d1(sText) = iSheetIndex
iSheetIndex = iSheetIndex + 1
Set myWorksheet = myWorkbook.sheets(d1(sText))
myWorksheet.Cells(1, 1) = "Time"
myWorksheet.Cells(1, 2) = "Subject"
myWorksheet.Cells(1, 3) = "Body"
d2(sText) = 2
End If
If d1(sText) = "" Then
d1(sText) = iSheetIndex
iSheetIndex = iSheetIndex + 1
If myWorkbook.sheets(d1(sText)) Is Nothing Then
Set myWorksheet = myWorkbook.sheets.add
myWorksheet.Name = sText
myWorksheet.Cells(1, 1) = "Time"
myWorksheet.Cells(1, 2) = "Subject"
myWorksheet.Cells(1, 3) = "Body"
d2(sText) = 2
Else
Set myWorksheet = myWorkbook.sheets(d1(sText))
End If
End If
iLastRow = d2(sText)
d2(sText) = d2(sText) + 1
myWorksheet.Cells(iLastRow, 1) =objItem.ReceivedTime
myWorksheet.Cells(iLastRow, 2) =objItem.Subject
myWorksheet.Cells(iLastRow, 3) =objItem.Body
Next
myWorkbook.SaveAs strPath & "myMail.xls"
myWorkbook.Close
xlApp.DisplayAlerts = False
Set xlApp = Nothing
MsgBox "Write Finish"
End Sub
谢谢 dsd999


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 0回复贴,共1页
<<返回vba吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示