我需要代码方面的小帮助。我有一个工作簿叫 情况报告 里面有好几张纸,我需要从这些纸中发送 表单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
在你杀死一个文件 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
而且你忘了反斜杠
你可能是想用 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会出错。