Excel 附加到outlook模板的VBA打开工作簿

Excel 附加到outlook模板的VBA打开工作簿,excel,vba,outlook,email-attachments,Excel,Vba,Outlook,Email Attachments,在发送邮件之前,是否有任何方法可以打开附加到电子邮件模板的工作簿,对其进行编辑和保存?我已经使用Set-Mesg=OutlookAp.CreateItemFromTemplateC:\Template.oft创建了mailitem对象,我可以看到附件,但到目前为止我看不到打开它的方法。如果有人有建议,或者知道这根本做不到,我洗耳恭听 看起来我可能需要在发送之前保存和编辑文件。。。仍然对想法持开放态度,但似乎根本不可能通过VBA打开附件我假设您正在从Excel自动化Outlook。此解决方案可能适

在发送邮件之前,是否有任何方法可以打开附加到电子邮件模板的工作簿,对其进行编辑和保存?我已经使用Set-Mesg=OutlookAp.CreateItemFromTemplateC:\Template.oft创建了mailitem对象,我可以看到附件,但到目前为止我看不到打开它的方法。如果有人有建议,或者知道这根本做不到,我洗耳恭听


看起来我可能需要在发送之前保存和编辑文件。。。仍然对想法持开放态度,但似乎根本不可能通过VBA打开附件

我假设您正在从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

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