【问题标题】:Outlook.Mailitem failed to be called by another subOutlook.Mailitem 未能被另一个子调用
【发布时间】:2020-06-21 04:26:07
【问题描述】:

我正在尝试将电子邮件的附件保存到我的桌面。一个 sub 使用 Item(1) 作为输入调用另一个 sub。到目前为止,我有这个,它在调用 sub saveAttachtoDisk 时出错。它给出了图片上显示的错误。

Sub Call_saveAttachtoDisk()

Dim objSelection As Outlook.Selection
Dim objMsg As Object 'Object

Set objSelection = ActiveExplorer.Selection

Set objMsg = objSelection.Item(1)

saveAttachtoDisk (objMsg)

End Sub

Public Sub saveAttachtoDisk(itm As Outlook.MailItem)
     Dim objAtt As Outlook.Attachment
     Dim saveFolder As String
     Dim i As Integer

     i = 0
     saveFolder = "C:\Users\peet\Desktop"
     For Each objAtt In itm.Attachments
          i = i + 1
          objAtt.SaveAsFile saveFolder & "\name" & i & ".pdf"
          Set objAtt = Nothing
     Next
End Sub

【问题讨论】:

  • 这不是您正在寻求帮助的错误,但它会在以后引起问题。图像和签名可以是附件。无论原始扩展名如何,您都使用 XLS 扩展名保存每个附件。 XLS 是 Excel 2003 工作簿的扩展。您真的还在使用 Excel 2003 吗?自 2007 年以来,工作簿的正常扩展名是 XLSX 或 XLSM。
  • @TonyDallimore 实际上我正在保存 .pdf 附件。
  • 我看到了对您代码的更正。但是,这并没有改变要点:您应该使用原始扩展名保存文件。例如,如果附件是图像,它将具有 PNG 或 BMP 或类似的扩展名。如果您将该扩展名更改为 PDF,错误的程序会尝试打开它。

标签: vba outlook


【解决方案1】:

找到了解决办法。

调用sub前需要添加Call

Call saveAttachtoDisk (objMsg)

【讨论】:

    【解决方案2】:

    只需去掉括号 ()

    例子

    saveAttachtoDisk objMsg
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-21
      • 1970-01-01
      相关资源
      最近更新 更多