【问题标题】:Opening an Outlook .msg file with Excel VBA使用 Excel VBA 打开 Outlook .msg 文件
【发布时间】:2015-08-05 05:53:42
【问题描述】:

我有以下代码

Sub Kenneth_Li()
    Dim objOL As Outlook.Application
    Dim Msg As Outlook.MailItem

    Set objOL = CreateObject("Outlook.Application")
    inPath = "C:\Users\SiliconPlus\Desktop\Si+ Contact Lists\Contact_Si+"

    thisFile = Dir(inPath & "\*.msg")
    Do While thisFile <> ""

        'Set Msg = objOL.CreateItemFromTemplate(thisFile)
        'Or
        Set Msg = objOL.OpenSharedItem(thisFile)

        Msg.display

        MsgBox Msg.Subject
        thisFile = Dir
    Loop


    Set objOL = Nothing
    Set Msg = Nothing
End Sub

当我使用OpenSharedItem 时,它会给出运行时错误 438 对象不支持此属性或方法。

当我使用CreateItemFromTemplate 时出现以下错误:

无法打开文件:AUTO Andy Low Yong Cheng 不在办公室(返回 22 09 2014).msg.
该文件可能不存在,您可能没有打开它的权限,或者它可能在另一个程序中打开。
右键单击包含该文件的文件夹,然后单击属性以检查您对该文件夹的权限。

【问题讨论】:

    标签: excel vba outlook


    【解决方案1】:

    我不是 100% 了解您想用代码实现什么,但试试这个:

    Sub LiminalMsgbx()
    
        Dim outappp, outmaill As Object
        Dim pthh As String
        pthh = "C:\DeskTop\MyTemplate.oft"
    
      Set outappp = CreateObject ("Outlook.Application")
      Set outmaill = outapp.CreateItemFromTemplate(pthh)   
    
                    With outmaill
                        .display
    
                        End With
    Set outappp = Nothing
    Set outmaill = Nothing
    
    End Sub
    

    您也可以使用.send 代替.display

    【讨论】:

      【解决方案2】:

      OpenSharedItem 方法由Namespace 对象公开,而不是Application

      Set objOL = CreateObject("Outlook.Application")
      set objNs = objOL.GetNamespace("MAPI")
      objNs.Logon
      ...
      Set Msg = objNs .OpenSharedItem(thisFile)
      

      至于第二个错误,它非常明确 - 找不到文件。您必须提供带有文件夹路径的完全限定文件名。您只提供文件名。

      【讨论】:

      • 完全合格是什么意思?据我所知,我只提供 C:\Users\SiliconPlus\Desktop\Si+ Contact Lists\Contact_Si+ 作为文件路径。
      • 这是 thisFile 变量的值吗?错误信息只包含没有路径组件的文件名。
      • 大声笑我仍然不明白你想说什么。你能用例子详细说明吗?谢谢!
      • 是的,这是 thisFile 变量的值,因为我指定了文件路径。
      • 再说一次,这就是您在调试器中看到的吗? AFAIK Dir() 仅返回没有路径组件的文件名。您必须使用 inPath : Set Msg = objOL.OpenSharedItem(inPath & "\" & thisFile)
      猜你喜欢
      • 2015-09-03
      • 1970-01-01
      • 2011-07-02
      • 1970-01-01
      • 2016-11-19
      • 1970-01-01
      • 1970-01-01
      • 2015-12-25
      • 1970-01-01
      相关资源
      最近更新 更多