使用以下代码,我可以粘贴电子邮件正文中A1:B20
范围内的单元格。
我想在A33:B36
范围下面的电子邮件正文中粘贴另一个单元格范围A1:B20
。
Sub Trigger_Email()
Dim rng As Range
Dim OutApp As Object
Dim OutMail As Object
Dim StrBody As String
StrBody = "Hello Recruitment Team," & "<br>" & "<br>" & _
"Please work on the below request details and open it for Vendor Sourcing. The details of the RRF are mentioned in the attachment." & "<br><br>"
Set rng = Nothing
On Error Resume Next
'Only the visible cells in the selection
'Set rng = Selection.SpecialCells(xlCellTypeVisible)
'You can also use a fixed range if you want
Set rng = Sheets("Sheet1").Range("A1:B20").SpecialCells(xlCellTypeVisible)
On Error GoTo 0
If rng Is Nothing Then
MsgBox "The selection is not a range or the sheet is protected" & _
vbNewLine & "please correct and try again.", vbOKOnly
Exit Sub
End If
With Application
.EnableEvents = False
.ScreenUpdating = False
End With
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
On Error Resume Next
With OutMail
.To = "vinod.sn@wellsfargo.com;mamta.b.fajalia@wellsfargo.com"
.CC = "G=EGS-IND-SC-Managers" & ";" & Cells(5, 2)
.BCC = ""
.Subject = "RRF for Vendor Sourcing - " & Cells(3, 2)
.HTMLBody = StrBody & rangetoHTML(rng)
.Attachments.Add ActiveWorkbook.FullName
.Display 'or use .Display
End With
On Error GoTo 0
With Application
.EnableEvents = True
.ScreenUpdating = True
End With
Set OutMail = Nothing
Set OutApp = Nothing
End Sub
以下是将范围转换为HTML元素的代码:
Function rangetoHTML(rng As Range)
' Changed by Ron de Bruin 28-Oct-2006
' Working in Office 2000-2013
Dim fso As Object
Dim ts As Object
Dim TempFile As String
Dim TempWB As Workbook
TempFile = Environ$("temp") & "\" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm"
'Copy the range and create a new workbook to past the data in
rng.Copy
Set TempWB = Workbooks.Add(1)
With TempWB.Sheets(1)
.Cells(1).PasteSpecial Paste:=8
.Cells(1).PasteSpecial xlPasteValues, , False, False
.Cells(1).PasteSpecial xlPasteFormats, , False, False
.Cells(1).Select
Application.CutCopyMode = False
On Error Resume Next
.DrawingObjects.Visible = True
.DrawingObjects.Delete
On Error GoTo 0
End With
'Publish the sheet to a htm file
With TempWB.PublishObjects.Add( _
SourceType:=xlSourceRange, _
Filename:=TempFile, _
Sheet:=TempWB.Sheets(1).Name, _
Source:=TempWB.Sheets(1).UsedRange.Address, _
HtmlType:=xlHtmlStatic)
.Publish (True)
End With
'Read all data from the htm file into RangetoHTML
Set fso = CreateObject("Scripting.FileSystemObject")
Set ts = fso.GetFile(TempFile).OpenAsTextStream(1, -2)
rangetoHTML = ts.readall
ts.Close
rangetoHTML = Replace(rangetoHTML, "align=center x:publishsource=", _
"align=left x:publishsource=")
'Close TempWB
TempWB.Close savechanges:=False
'Delete the htm file we used in this function
Kill TempFile
Set ts = Nothing
Set fso = Nothing
Set TempWB = Nothing
End Function
答案 0 :(得分:2)
这应该可以解决问题:
Sub Trigger_Email()
Dim rng As Range
Dim rng2 As Range
Dim OutApp As Object
Dim OutMail As Object
Dim StrBody As String
StrBody = "Hello Recruitment Team," & "<br>" & "<br>" & _
"Please work on the below request details and open it for Vendor Sourcing. The details of the RRF are mentioned in the attachment." & "<br><br>"
Set rng = Nothing
On Error Resume Next
'Only the visible cells in the selection
'Set rng = Selection.SpecialCells(xlCellTypeVisible)
'You can also use a fixed range if you want
Set rng = Sheets("Sheet1").Range("A1:B20").SpecialCells(xlCellTypeVisible)
Set rng2 = Sheets("Sheet1").Range("A33:B36").SpecialCells(xlCellTypeVisible)
On Error GoTo 0
If rng Is Nothing Then
MsgBox "The selection is not a range or the sheet is protected" & _
vbNewLine & "please correct and try again.", vbOKOnly
Exit Sub
End If
With Application
.EnableEvents = False
.ScreenUpdating = False
End With
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
On Error Resume Next
With OutMail
.To = "vinod.sn@wellsfargo.com;mamta.b.fajalia@wellsfargo.com"
.CC = "G=EGS-IND-SC-Managers" & ";" & Cells(5, 2)
.BCC = ""
.Subject = "RRF for Vendor Sourcing - " & Cells(3, 2)
.HTMLBody = StrBody & rangetoHTML(rng) & rangetoHTML(rng2)
.Attachments.Add ActiveWorkbook.FullName
.Display 'or use .Display
End With
On Error GoTo 0
With Application
.EnableEvents = True
.ScreenUpdating = True
End With
Set OutMail = Nothing
Set OutApp = Nothing
End Sub
复制此子并用它替换原始子(函数必须保持不变)。
您的询问方式暗示您根本没有使用VBA的经验,只需使用此代码即可。如果您需要以任何其他方式推进您的代码,我建议您尝试理解代码,以便您自己编辑。我只是在这里添加一些你可以轻松完成的小部分。
答案 1 :(得分:0)
Sub Macro2()
将LastRow设为Double
LastRow = Cells.Find(“ *”,SearchOrder:= xlByRows,SearchDirection:= xlPrevious).Row
范围(Selection,Selection.End(xlToRight))。选择 范围(选择,选择。结束(xlDown))。选择
Range("A1:AM" & LastRow).Select
ActiveWorkbook.Worksheets(str).Sort.SortFields.Clear
ActiveWorkbook.Worksheets(str).Sort.SortFields.Add Key:= _
Range("G2:G" & LastRow), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption _
:=xlSortNormal
With ActiveWorkbook.Worksheets(str).Sort
.SetRange Range("A1:AM" & LastRow)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("A1").Select
ActiveWorkbook.Save
ActiveWorkbook.Close
Workbooks("Data Send").Activate
结束子