通过电子邮件发送具体的表格

问题描述 投票:0回答:1

我需要代码方面的小帮助。我有一个工作簿叫 情况报告 里面有好几张纸,我需要从这些纸中发送 表单8(调用表) 通过电子邮件。我生成的代码,但它给我的错误。我试图看看什么是错误的,但我不能解决它(我开始学习VBA最近)。

文件的位置是在桌面上。

这是目前我的代码。

Option Explicit

    Sub EmailWithOutlook()
        Dim oApp As Object
        Dim oMail As Object
        Dim WB As Workbook
        Dim FileName As String
        Dim wSht As Worksheet
        Dim shtName As String

    Application.ScreenUpdating = False

    ActiveSheet.Copy
    Set WB = ActiveWorkbook

    FileName = WB.Worksheets(1).Name
    Kill "C:\Users\Default\Desktop" & "Status report.xlsm"
    On Error GoTo 0
    WB.SaveAs FileName:="C:\Users\Default\Desktop" & "Status report.xlsm"

    Set oApp = CreateObject("Outlook.Application")
    Set oMail = oApp.CreateItem(0)
    With oMail

        .To = "[email protected]"
        .Subject = "Test workbook"
        .body = "Hello, could you please check workbook" & vbCrLf & vbCrLf & _
          "I attached you file"
        .Attachments.Add WB.FullName
        .Display
    End With

    WB.ChangeFileAccess Mode:=xlReadOnly
    Kill WB.FullName
    WB.Close SaveChanges:=False


    Application.ScreenUpdating = True
    Set oMail = Nothing
    Set oApp = Nothing
End Sub
vba email worksheet-function
1个回答
0
投票

在你杀死一个文件 Kill "C:\Users\Default\Desktop\" & "Status report.xlsm"你需要检查该文件是否存在。

~~> 检查文件是否存在

If Dir("C:\Users\Default\Desktop\" & "Status report.xlsm") <> "" Then
 Kill "C:\Users\Default\Desktop\" & "Status report.xlsm"
End If

而且你忘了反斜杠


0
投票

你可能是想用 Filename 从单元格中删除。

考虑使用一个变量来保持一致性,并确保在路径和文件名之间加入反斜杠。

FileName = WB.Worksheets(1).Name

Dim sFullFile As String
sFullFile = "C:\Users\Default\Desktop\" & FileName

If Dir(sFullFile) <> "" Then Kill sFullFile
WB.SaveAs FileName:=sFullFile

另外需要注意的是,如果你将它保存为XLSM,那么原始格式也必须是XLSM,否则如果你没有指定文件格式,SaveAs会出错。

XlFileFormat枚举文档

© www.soinside.com 2019 - 2024. All rights reserved.