【发布时间】:2021-02-11 00:42:20
【问题描述】:
我正在尝试使用 VBA 从我的 excel 文件中发送整个工作表 ("SEND") 作为附件,我使用以下代码来完成它:
我收到以下错误:对象的变量或变量“with”未定义, 代码有什么问题?
Sub Sendemail()
Dim xOutlookObj As Object
Dim xEmailObj As Object
Dim tempFile As String
Dim strbodymsg As String
Dim wb As Workbook
Dim tempWB As Workbook
tempFile = ActiveWorkbook.Path & "\sheets_copy.xlsx"
Set wb = wb.Sheets("SEND")
wb.Save
wb.Sheets(Array("SEND")).Copy
Set tempWB = ActiveWorkbook
If Len(Dir(tempFile)) <> 0 Then
Kill tempFile
End If
' Save & close the tempFile
tempWB.SaveAs tempFile
tempWB.Close
strbody = "Hello"
'Create Outlook email
Set xOutlookObj = CreateObject("Outlook.Application")
Set xEmailObj = xOutlookObj.CreateItem(0)
On Error Resume Next
With xEmailObj
.Display
.To = "email1@gmail.com"
.Cc = "email2@gmail.com"
.Subject = "Email Test"
.Attachments.Add tempFile
.HTMLBody = strbody
If DisplayEmail = False Then
'.Send
End If
End With
On Error GoTo 0
Set xEmailObj = Nothing
Set xOutlookObj = Nothing
End Sub()
【问题讨论】:
-
当然,在添加
Dim xOutlookObj As Object之后对我来说工作正常。你一定把它从你的复制/粘贴中去掉了? -
你是对的,我只是忘了复制它,但在我的电脑上它不工作
-
明天上班再试试看能不能用
-
我在这里确实遇到了一个错误...
Set wb = wb.Sheets("SEND")- 因为您正在尝试将Worksheet对象设置为Workbook变量...并且您尝试在设置之前使用 wb任何有效的东西......也许先尝试修复这些东西? (我最初评论了这些事情,因为您说问题出在您的With语句上。)您可能还想包含Option Explicit并删除该错误处理。 -
请记住,您不附加
Worksheet,而是附加Workbook- 确保您了解两者之间的区别。