【问题标题】:Get Full Path for Unsaved File to attach to Outlook mail获取未保存文件的完整路径以附加到 Outlook 邮件
【发布时间】:2022-06-21 04:10:12
【问题描述】:

我正在尝试创建工作表的副本并仅将副本作为附件通过电子邮件发送。它不会附加ActiveWorkbook,我认为是因为它从未保存过,所以它在一个临时位置。

如果我使用Activeworkbook.Path,它会给出文件名,而不是完整路径。
如果我使用ThisWorkbook.Path,它会给出我从中创建副本的工作簿的路径,而不是副本本身。

Sub DemandEM() 
Dim OutApp As Object 
Dim Outmail As Object 
Dim Subject As String 
Dim Body As String
Dim Attachment As String

Subject = "DMND NP" & Sheets("Loading").Cells(4, 2).Value 
Body = "Please see attachment for NP" & Sheets("Loading").Cells(4, 2).Value
Sheets("Demand Input").Copy
Attachment = ActiveWorkbook.Path

Set OutApp = CreateObject("Outlook.Application") 
OutApp.Session.Logon 
Set Outmail = OutApp.CreateItem(0)

With Outmail
    .to = "ABC@123.com"
    .Subject = Subject
    .Body = Body
    .Attachments.Add (Attachment)
    .Display 
End With 
End Sub

【问题讨论】:

  • 将文件保存在例如 Temp 文件夹中?
  • 您可以使用environ("temp")访问临时文件夹
  • 未保存的工作簿没有路径。您必须将其保存在某处并提供其全名。

标签: excel vba outlook


【解决方案1】:

Outlook:发送新创建的工作簿

  • 这会将您创建的单页工作簿保存在名为Demand Input.xlsxThisWorkbook's 路径中并关闭它。余下outlook代码后,会删除该文件。
Option Explicit

Sub DemandEM()
    Dim OutApp As Object
    Dim Outmail As Object
    Dim Subject As String
    Dim Body As String
    Dim dFilePath As String
    
    Subject = "DMND NP" & Sheets("Loading").Cells(4, 2).Value
    Body = "Please see attachment for NP" & Sheets("Loading").Cells(4, 2).Value
    ThisWorkbook.Sheets("Demand Input").Copy ' create new one-sheet workbook
    With Workbooks(Workbooks.Count)
        dFilePath = ThisWorkbook.Path & "\" & "Demand Input.xlsx"
        Application.DisplayAlerts = False ' overwrite without confirmation
        .Save dFilePath
        Application.DisplayAlerts = True
        .Close SaveChanges:=False
    End With
    
    Set OutApp = CreateObject("Outlook.Application")
    OutApp.Session.Logon
    Set Outmail = OutApp.CreateItem(0)
    
    With Outmail
        .to = "ABC@123.com"
        .Subject = Subject
        .Body = Body
        .Attachments.Add dFilePath
        .Display
    End With

    ' If you want to keep the file, out-comment the following line.
    Kill dFilePath
    
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-16
    • 1970-01-01
    • 2012-01-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多