从Excel发送文件夹中的最新文件

时间:2017-03-28 10:06:43

标签: excel vba

我正在尝试使用VBA从Excel中的文件夹中发送最新的PDF文件。

我已经设法在Outlook VBA中执行此操作 - 我不确定在Excel中需要更改哪些内容。原因是Outlook宏与定期运行的Excel宏冲突。

我的代码目前只附加了在过去30秒内创建的文件夹中的所有文件 - 只有一个PDF。

请注意,代码在Outlook中完美运行。

Sub SendFiles()
 Dim objMail As Outlook.MailItem
 Dim fso As Object
 Dim strFile As String
 Dim fsoFile
 Dim fsoFldr
 Dim dtNew As Date, sNew As String

Set fso = CreateObject("Scripting.FileSystemObject")

 strFile = "C:\temp\" 'path to folder

 Set fsoFldr = fso.GetFolder(strFile)
 dtNew = Now - TimeValue(00:00:30) '30 seconds ago

For Each fsoFile In fsoFldr.Files

If fsoFile.DateCreated > dtNew Then

sNew = fsoFile.Path

Set objMail = Application.CreateItem(olMailItem)

 With objMail
 .To = "email@address.com"
 .Subject = "Example"
 .BodyFormat = olFormatPlain
 .Attachments.Add sNew
 .Importance = olImportanceHigh
 .Send
 End With

End If
Next fsoFile

End Sub

1 个答案:

答案 0 :(得分:1)

一些缺陷:

  • 您没有实例化任何Outlook应用程序对象

    在Excel环境中,background-attachment指向Application Excel

  • Application应为TimeValue(00:00:30)

并确保已将TimeValue("00:00:30")库添加到您的VBA项目参考中:1)点击工具 - >参考2)滚动列表框直到Microsoft Outlook X.XX对象库条目并切换其复选标记以选择它3)单击"确定"按钮

然后你可以试试这个代码的重构:

Outlook