ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 2680|回复: 1

[求助] outlook指定文件邮件附件进行下载并重命名

[复制链接]

TA的精华主题

TA的得分主题

发表于 2017-4-24 17:40 | 显示全部楼层 |阅读模式
各位大神大家好
在这里潜水了一段时间,也研究了一段时间,但是收效甚微,因此将此需求列出,请大神指点,
在工作中,由于会经常涉及一些申请需求,需要做申请台账,申请的模板是一致的均为:.xlsx或则.xls文件,目前我在论坛上找到了如下代码可以批量下载附件:


原文地址如下:
源文件链接为:http://simondu.blog.51cto.com/754321/730919
现在存在如下需求:
1、由于在申请的时候会附带一定的照片,不过照片不需要保存,但是这个程序会保存所有附件,我只需要保存.xlsx或.xls文件
2、这个程序在运行中会下载FOR Download这个文件下所有的历史文件附件,但是我仅希望它下载新到达的邮件附件
3、由于申请模板是固定的,因此附件的命名基本都是一致,但是附件中A3单元格均是不重复信息,因此希望可以用A3单元格信息进行重命名。
如上信息还望大神们不吝指点,谢谢!

TA的精华主题

TA的得分主题

发表于 2017-4-28 03:15 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
两种思路,
第一,直接打开读取单元格数据后保存 (没有测试过请自行测试)
第二,保存后改名 (应该可行)
代码如下:


  1. Public Sub SaveToFolder(MyMail As Outlook.MailItem)
  2. Dim strID As String
  3. Dim objNS As Outlook.Namespace
  4. Dim objMail As Outlook.MailItem
  5. Dim objAtt As Outlook.Attachment
  6. Dim c As Integer
  7. Dim save_name As String
  8. Dim save_path As String
  9. Dim ext As String
  10. Dim ReFormatExcel
  11. Dim wkb

  12. strID = MyMail.EntryID
  13. Set objNS = Application.GetNamespace("MAPI")
  14. Set objMail = objNS.GetItemFromID(strID)

  15. On Error Resume Next

  16. If objMail.Attachments.Count > 0 Then
  17.     For c = 1 To objMail.Attachments.Count
  18.         Set objAtt = objMail.Attachments(c)
  19.         save_name = objAtt.Filename
  20.             
  21.             'μúò»ÖÖ·½·¨£oÖ±½ó′ò¿aoó¶áè¡μ¥Ôa¸ñêy¾Y¸ÄÃû±£′æ
  22.             '--------------------------------------------------------------------------------------
  23. '            If objAtt.Filename Like "*.xl*" Then
  24. '
  25. '                Set ReFormatExcel = CreateObject("Excel.Application")
  26. '                Set wkb = ReFormatExcel.Workbooks.Open(Filename:=objAtt.Filename)
  27. '
  28. '                    If Right(save_name, 4) = "." Then
  29. '                        ext = ".xls"
  30. '                    Else
  31. '                        ext = ".xlsx"
  32. '                    End If
  33. '
  34. '                save_name = wkb.Sheets(1).Range("A3").Value
  35.             '--------------------------------------------------------------------------------------

  36.                 save_path = "D:\test" 'Ä©Î2Îñ±Ø¼óéÏ·′D±¸ü
  37.                
  38.                 'èç1ûÎļt¼D2»′æÔúÔò′′½¨
  39.                 If Dir(save_path, 16) = Empty Then
  40.                     VBA.MkDir (save_path)
  41.                 End If
  42.                
  43.             objAtt.SaveAsFile save_path & save_name
  44.             End If
  45.     Next
  46. End If


  47. 'μú¶tÖÖ·½·¨£o±£′æoó¸ÄÃû
  48. '---------------------------------------------------------------------
  49. 'If save_name Like "*.xl*" Then
  50. '
  51. 'Set ReFormatExcel = CreateObject("Excel.Application")
  52. 'Set wkb = ReFormatExcel.Workbooks.Open(Filename:=save_path & save_name)

  53. '    If Right(save_name, 4) = "." Then
  54. '        ext = ".xls"
  55. '    Else
  56. '        ext = ".xlsx"
  57. '    End If
  58. 'save_name = wkb.Sheets(1).Range("A3").Value
  59. '
  60. 'wkb.SaveAsFile save_path & save_name & ext
  61. 'End If

  62. '---------------------------------------------------------------------

  63. objMail.Delete

  64. Set objAtt = Nothing
  65. Set objMail = Nothing
  66. Set objNS = Nothing
  67. End Sub



复制代码
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-12-12 05:15 , Processed in 0.033872 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表