[英]Email worksheet with Outlook, get values from opened workbook, from Excel
我打開了“ MASTER.xlsm”工作簿。 我從“ MASTER.xlsm”運行代碼。
我想從我的“ MASTER.xlsm”到新創建的Outlook電子郵件中獲取值。 我沒有到那里。
代碼順序有問題嗎?
Sub EmailWithOutlook()
Dim oApp As Object
Dim oMail As Object
Dim WB As Workbook
Dim WBBW As Workbook
Dim FileName As String
Dim wSht As Worksheet
Dim shtName As String
Set WBBW = Workbooks("MASTER.xlsm")
WBBW.Worksheets("MAIN").Range("D134").Value = variableX
WBBW.Worksheets("MAIN").Range("D11").Value = variableY
WBBW.Worksheets("MAIN").Range("D13").Value = variableZ
Application.ScreenUpdating = False
' Make a copy of the active worksheet
' and save it to a temporary file
ActiveSheet.Copy
Set WB = ActiveWorkbook
FileName = "My file"
On Error Resume Next
Kill "\" & FileName
On Error GoTo 0
WB.SaveAs FileName:=Environ$("temp") & "\" & FileName
'Create and show the Outlook mail item
Set oApp = CreateObject("Outlook.Application")
Set oMail = oApp.CreateItem(0)
With oMail
'Uncomment the line below to hard code a recipient
.To = ""
'Uncomment the line below to hard code a subject
.Subject = "My subject | " & variableX & " | " & variableY
'Uncomment the lines below to hard code a body
.HTMLBody = "<BODY style=font-size:11pt;font-family:Calibri>Dear Sir/Madam, <br><br> please check this " & _
variableZ & "" & _
" and comment if needed.<br> Waiting for your reply ASAP. <br><br> Thank you!</BODY>" & .HTMLBody
.Attachments.Add WB.FullName
.Display
End With
'Delete the temporary file
WB.ChangeFileAccess Mode:=xlReadOnly
Kill WB.FullName
WB.Close SaveChanges:=False
'Restore screen updating and release Outlook
Application.ScreenUpdating = True
Set oMail = Nothing
Set oApp = Nothing
End Sub
正如niton所說,我檢查了您的代碼,您應該首先聲明變量,例如“ variableX”,“ variableY”,“ variableZ”。 但是,據我了解,您只想從Excel文件發送電子郵件。 因此,您可以參考以下代碼:
Sub test()
Dim strReportName As String
Dim oLook As Object
Dim oMail As Object
Dim olns As Outlook.Namespace
Dim strTO As String
Dim strCC As String
Dim strMessageBody As String
Dim strSubject As String
Set oLook = CreateObject("Outlook.Application")
'Set olns = oLook.GetNamespace("MAPI")
Set oMail = oLook.CreateItem(0)
'*********************** USER DEFINED SECTION ************************
strTO = "chrissparkes@me.com"
strMessageBody = "<---This is an automatically generated email. Please do not respond.---->"
strSubject = "Daily Skip"
'*********************************************************************
With oMail
.To = strTO
.CC = strCC
.Body = strMessageBody
.Subject = strSubject
'.Attachments.Add "C:\Output Reports\SkipLotReport.xlsx"
.Display
End With
Set oMail = Nothing
Set oLook = Nothing
'Set olns = Nothing
'DB.Close
'tbloutput.Close
'dbLocal.Close
objWorkbook.Close
'Set objmail = Nothing
'Set DB = Nothing
Set tbloutput = Nothing
Set objWorksheet = Nothing
Set objWorkbook = Nothing
Set objExcel = Nothing
Set tbloutput = Nothing
Set dbLocal = Nothing
End Sub
注意:請參考Outlook庫。
有關更多信息,請參見鏈接: 使用VBA向多個收件人發送電子郵件
您缺少明確的期權
Option Explicit
' Tools | Options | Editor tab
' Checkbox "Require Variable Declaration"
Sub EmailWithOutlook()
Dim oApp As Object
Dim oMail As Object
Dim WB As Workbook
Dim WBBW As Workbook
Dim FileName As String
Dim wSht As Worksheet
Dim shtName As String
Dim variableX As String
Dim variableY As String
Dim variableZ As String
Set WBBW = Workbooks("MASTER.xlsm")
variableX = "variableX string for example"
variableY = "variableY string for example"
variableZ = "variableZ string for example"
WBBW.Worksheets("MAIN").Range("D134").Value = variableX
WBBW.Worksheets("MAIN").Range("D11").Value = variableY
WBBW.Worksheets("MAIN").Range("D13").Value = variableZ
Application.ScreenUpdating = False
' Make a copy of the active worksheet
' and save it to a temporary file
ActiveSheet.Copy
Set WB = ActiveWorkbook
FileName = "My file"
On Error Resume Next
' This probably does not do anything. On Error Resume Next strikes again?
Kill "\" & FileName
On Error GoTo 0
WB.SaveAs FileName:=Environ$("temp") & "\" & FileName
'Create and show the Outlook mail item
Set oApp = CreateObject("Outlook.Application")
Set oMail = oApp.CreateItem(0)
With oMail
'Uncomment the line below to hard code a recipient
.To = ""
'Uncomment the line below to hard code a subject
.Subject = "My subject | " & variableX & " | " & variableY
'Uncomment the lines below to hard code a body
.HTMLBody = "<BODY style=font-size:11pt;font-family:Calibri>Dear Sir/Madam, <br><br> please check this " & _
variableZ & "" & _
" and comment if needed.<br> Waiting for your reply ASAP. <br><br> Thank you!</BODY>" & .HTMLBody
.Attachments.Add WB.FullName
.Display
End With
'Delete the temporary file
WB.ChangeFileAccess Mode:=xlReadOnly
Kill WB.FullName
WB.Close SaveChanges:=False
'Restore screen updating and release Outlook
Application.ScreenUpdating = True
Set oMail = Nothing
Set oApp = Nothing
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.