【问题标题】:VBA open workbook attached to outlook template附加到 Outlook 模板的 VBA 打开工作簿
【发布时间】:2014-01-14 20:16:32
【问题描述】:

有什么方法可以在发送邮件之前打开附加到电子邮件模板的工作簿、编辑并保存它?我已经使用Set Mesg = OutlookAp.CreateItemFromTemplate("C:\Template.oft") 创建了 mailitem 对象,并且可以看到附件,但到目前为止我还看不到打开它的方法。如果有人有建议,或者知道这根本无法做到,我会全力以赴。

看起来我可能必须在发送之前保存和编辑文件...仍然可以接受想法,但似乎根本无法通过 VBA 打开附件

【问题讨论】:

  • 你有机会尝试我下面的建议吗?
  • 是的,我做到了,我选择了它作为正确答案。从技术上讲,虽然我想简单地抓取附件对象并在当前的 excel 实例中打开/编辑它,而不必将其保存到临时文件夹等。这似乎第一个是不可能的,所以我最终使用这种方法的一种变体。
  • 这个答案应该是在当前 Excel 实例中打开文件。不是吗?至于临时文件夹......下面的答案不使用临时文件夹,但它确实需要从已知位置保存和打开文件。 也许可以使用真正的临时文件夹,如果您可以复制双击操作(这将从临时文件夹打开文件),但这需要以其他方式完成。 Attachment 对象仅支持两种方法(.Delete.SaveAsFile),我一直在寻找类似 @​​987654324@ 的方法,但这似乎不是一个选项。

标签: excel vba outlook email-attachments


【解决方案1】:

我假设您正在 Excel 自动化 Outlook。此解决方案可能对您有用,但正如您所注意到的,它确实依赖于保存附件并重新附加文件的操作版本。假设您可以编写将“编辑”工作簿附件的代码,这应该适合您。

Sub TestOutlookTemplate()

Dim MyOutlook As Outlook.Application
Dim MyMail As Outlook.MailItem
Dim att As Outlook.Attachment
Dim templatePath As String
Dim tempFileName As String
Dim attWorkbook As Workbook


templatePath = "C:\users\david_zemens\desktop\Untitled.oft"
tempFileName = "C:\users\david_zemens\desktop\tempexcelfile.xlsx"

Set MyOutlook = CreateObject("Outlook.Application")

Set MyMail = MyOutlook.CreateItemFromTemplate(templatePath)
    MyMail.Display

    For Each att In MyMail.Attachments
        If att.DisplayName Like "*.xls*" Then
            att.SaveAsFile tempFileName

            'Now that you have saved the file, delete the attachment
            att.Delete

            'Open the file
            Set attWorkbook = Workbooks.Open(tempFileName)

            'Perform manipulation on the file
            attWorkbook.Sheets(1).Name = "Sheet ONE"

            'Save fhe file
            attWorkbook.Save

            'Close the file
            attWorkbook.Close

            MyMail.Attachments.Add tempFileName
        End If
    Next


'Send your mail (make sure you have added a recipient
MyMail.Send

Set attWorkbook = Nothing
Set MyMail = Nothing
Set MyOutlook = Nothing


End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-13
    • 1970-01-01
    • 1970-01-01
    • 2017-01-16
    • 1970-01-01
    相关资源
    最近更新 更多