如何发送所有以* .msg存储在文件夹中的Outlook邮件项目

时间:2018-12-05 19:13:56

标签: vba outlook outlook-vba

我有一个程序,该程序可以创建多封电子邮件,并将它们保存为.msg文件映射为“ Y:”的共享驱动器上的文件夹。每封邮件都有不同的收件人,主题和邮件正文。

为了使用我的Outlook发送这些消息,我编写了这段代码,但是它生成错误“ Object Required 424”,并且调试器突出显示“ Set MySource = .....”行。任何建议请

Sub SendMSGs()

    Dim MyItem As Outlook.MailItem, MySource As Object, file As Variant
    Set MySource = MyObject.GetFolder("Y:\UI_messages\")
    For Each file In MySource.Files
        Set MyItem = file.Name.msg
        MyItem.Send
    Next file

End Sub

2 个答案:

答案 0 :(得分:0)

我尚未测试此代码,甚至未尝试对其进行编译。它修复了代码中最明显的错误,因此至少您会获得更好的错误类别。

将文件名从https://stackoverflow.com/a/19426859/973283转换为邮件项目的技术。

此代码需要引用“ Microsoft脚本运行时”。没有这个,FileFolderFileSystemObject是未知类型。

Sub SendMSGs()

  Dim FileCrnt As File
  dim FldrCrnt As Folder
  Dim Fso As FileSystemObject
  Dim ItemCrnt As MailItem
  Dim Path As String

  Path = "Y:\UI_messages\"

  Set Fso = CreateObject("Scripting.FileSystemObject")
  Set FldrCrnt = Fso.GetFolder(Path)

  For Each FileCrnt In FldrCrnt.Files
    If LCase(Right$(FileCrnt.Name, 4)) = ".msg" Then 
      Set ItemCrnt = Application.CreateItemFromTemplate(Path & FileCrnt.Name)
      ItemCrnt.Send
    End If
  Next FileCrnt

End Sub

答案 1 :(得分:0)

应该是-示例

Option Explicit
Sub SendMSGs()
    Dim MyItem As Outlook.MailItem

    Dim MyObject As Object
    Set MyObject = CreateObject("Scripting.FileSystemObject")

    Dim MySource As Object
    Set MySource = MyObject.GetFolder("C:\Temp\")

    Dim oFile As Object
    For Each oFile In MySource.Files
        If LCase(Right$(oFile.Name, 4)) = ".msg" Then
            Set MyItem = Application.CreateItemFromTemplate("C:\Temp\" & oFile.Name)
            MyItem.Display
        End If
    Next oFile

End Sub

尝试使用Option Explicit

@Tony Dallimore Answer如果将 Dim FldrCrnt As Folder 更改为 Dim FldrCrnt As Object

应该可以使用