以.csv或.xls的形式发送活动工作簿



我正在尝试将我的工作簿作为.csv或.xls文档作为电子邮件附件发送。由于我使用 .xlsm 文档来运行我的宏,因此附件将是 .xlsm 文档。我的工作簿应该是 Web 应用程序的输入,我需要它是.xls或.csv。

我可以在下面的代码中添加任何行以在发送之前将其创建为.csv或.xls文档?我不想在我的计算机上保存额外的副本,只是希望它更改附件中的文档类型。

Dim OutApp As Object
Dim OutMail As Object
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
On Error Resume Next
With OutMail
    .To = ""
    .CC = ""
    .BCC = ""
    .Subject = ""
    .Body = ""
    .Attachments.Add ActiveWorkbook.FullName
    .Send
End With
On Error GoTo 0
Set OutMail = Nothing
Set OutApp = Nothing

您需要在某处实际创建工作簿的副本,以便更改文件类型,附加并发送。您可以使用一个函数来执行此操作:

Function GetCSVCopy() As String
    Set wb = ActiveWorkbook
    Set tempSheet = ActiveSheet.Copy
    tempName$ = Environ$("TEMP") & "" & Replace$(wb.Name, ".xlsm", ".csv")
    tempSheet.SaveAs tempName, xlCSV
    tempSheet.Close False
    wb.Activate
    GetCSVCopy = tempName
End Function

像这样使用:

With OutMail
    .To = ""
    .CC = ""
    .BCC = ""
    .Subject = ""
    .Body = ""
    attName$ = GetCSVCopy
    .Attachments.Add attName
    .Send
End With
Kill attName '// Remove file after use.

相关内容

最新更新