Note: The other languages of the website are Google-translated. Back to English

如何在復制和粘貼指定範圍到Excel中的電子郵件正文中發送電子郵件?

在許多情況下,Excel工作表中指定範圍的內容可能對您的電子郵件通信很有用。 在本文中,我們將介紹一種直接在Excel中發送將具有指定範圍的電子郵件粘貼到電子郵件正文中的方法。

發送具有指定範圍的電子郵件,粘貼到Excel中的電子郵件正文中
使用出色的工具發送指定範圍的電子郵件,並將其粘貼到電子郵件正文中

有關在Excel中發送郵件的更多教程...


發送具有指定範圍的電子郵件,粘貼到Excel中的電子郵件正文中

以下VBA代碼可以幫助您複製範圍並將其直接粘貼到Excel中的Outlook電子郵件正文中。 請執行以下操作。

1.在工作表中包含您需要復制的範圍,按 其他 + F11 同時打開 Microsoft Visual Basic for Applications 窗口。

2.在開幕 Microsoft Visual Basic for Applications 窗口,請點擊 工具 > 參考 如下圖所示。

3。 在裡面 參考– VBAProject 對話框,請查找並檢查 Microsoft Outlook對像庫 選項,然後單擊 OK 按鈕。

4。 點擊 插入 > 模塊,然後將下面的VBA代碼複製並粘貼到“模塊”窗口中。

VBA代碼:發送具有指定範圍的電子郵件,粘貼到Excel中的電子郵件正文中

Sub Send_Email()
'Updated by Extendoffice 20200119
    Dim xRg As Range
    Dim I, J As Long
    Dim xAddress As String
    Dim xEmailBody As String
    Dim xMailOut As Outlook.MailItem
    Dim xOutApp As Outlook.Application    
    On Error Resume Next
    xAddress = ActiveWindow.RangeSelection.Address
    Set xRg = Application.InputBox("Please select range you need to paste into email body", "KuTools For Excel", xAddress, , , , , 8)
If xRg Is Nothing Then Exit Sub
Application.ScreenUpdating = False
    Set xOutApp = CreateObject("Outlook.Application")
    Set xMailOut = xOutApp.CreateItem(olMailItem)
    For I = 1 To xRg.Rows.Count
        For J = 1 To xRg.Columns.Count
            xEmailBody = xEmailBody & "  " & xRg.Cells(I, J).value
        Next
        xEmailBody = xEmailBody & vbNewLine
    Next
    xEmailBody = "Hi" & vbLf & vbLf & " body of message you want to add" & vbLf & vbLf & xEmailBody & vbNewLine
    With xMailOut
        .Subject = "Test"
        .To = "happy.xuebi@163.com"
        .Body = xEmailBody
        .Display
        '.Send
    End With
    Set xMailOut = Nothing
    Set xOutApp = Nothing
    Application.ScreenUpdating = True
End Sub

筆記:

  • 1)。 請更改電子郵件正文 xEmailBody =“嗨”&vbLf&vbLf&“您要添加的郵件正文”&vbLf&vbLf&xEmailBody&vbNewLine 如你所需。
  • 2)。 請指定您的電子郵件收件人和主題(至= happy.xuebi@163.com.Subject =“測試”) 代碼中的行。

5。 按 F5 鍵來運行代碼。 在彈出 Excel的Kutools 對話框,請選擇您需要粘貼到電子郵件正文中的範圍,然後單擊 OK 按鈕。 看截圖:

6.現在,將創建一封包含指定收件人,主題,正文和所選Excel範圍的電子郵件,請單擊 發送 按鈕發送此電子郵件。 請參閱顯示的屏幕截圖。

備註:僅當您將Outlook用作電子郵件程序時,VBA代碼才起作用。


使用出色的工具發送指定範圍的電子郵件,並將其粘貼到電子郵件正文中

如果您不使用Outlook,但仍希望直接在Excel中直接發送電子郵件,並在其中粘貼指定的範圍數據,則強烈建議您使用 發電子郵件 的效用 Excel的Kutools 為了你。 使用此功能,您只需要配置電子郵件地址的傳出服務器,然後以後再通過此電子郵件地址直接在Excel中發送電子郵件。

申請前 Excel的Kutools首先下載並安裝.

1.首先,您需要準備一個帶有必填字段的郵件列表。

  • 保養竅門:郵件列表必須至少包含2行,並且第一行必須為標頭(假設您要將電子郵件發送到Excel中的兩個電子郵件地址,請輸入這兩個電子郵件地址,標頭為“ Email”,如下所示) )。
  • 或者,您可以使用以下命令輕鬆創建郵件列表 創建郵件列表 功能。

2.選擇範圍,將數據添加到電子郵件正文,然後按 按Ctrl + C 鍵複製它。

3.選擇整個郵件列表(包括標題),單擊 Kutools 加 > 發電子郵件。 看截圖:

4.然後 發電子郵件 對話框彈出。

  • 4.1)所選郵件列表的項目填充在相應的字段中(您可以根據需要在郵件列表中添加更多字段);
  • 4.2)點擊電子郵件正文框,然後按 按Ctrl + V 鍵將選定的範圍數據粘貼到其中。 之後,根據需要添加其他內容;
  • 4.3取消選中 通過Outlook發送電子郵件 框;
  • 2.4)點擊 發送服務器設置 按鈕。 看截圖:

5.然後 傳出服務器(SMTP)設置-新方案 對話框彈出。 請在電子郵件地址中填入其服務器設置,並在選中以下內容後指定一個文件夾來保存所有已發送的郵件 將發送的電子郵件保存到 框,然後單擊 OK 按鈕保存設置。

6.返回到 發電子郵件 對話框中,單擊 發送 按鈕發送電子郵件。

從現在開始,您可以直接在Excel中發送具有此功能的電子郵件。

  如果您想免費試用(30-day) 這個實用程序, 請點擊下載,然後按照上述步驟進行操作。


相關文章:

將電子郵件發送到Excel單元格中指定的電子郵件地址
假設您有一個電子郵件地址列表,並且您想直接在Excel中批量向這些電子郵件地址發送電子郵件。 如何實現呢? 本文將向您展示將電子郵件發送到Excel中單元格中指定的多個電子郵件地址的方法。

在Excel中發送電子郵件時插入Outlook簽名
假設要直接在Excel中發送電子郵件,如何在電子郵件中添加默認的Outlook簽名? 本文提供了兩種方法來幫助您在Excel中發送電子郵件時添加Outlook簽名。

發送帶有Excel中附加的多個附件的電子郵件
本文討論的是通過帶有Excel中附加的多個附件的Outlook發送電子郵件。

如果在Excel中已達到到期日期,則發送電子郵件
例如,如果C列中的截止日期小於或等於7天(當前日期為2017/9/13),則向A列中的指定收件人發送電子郵件提醒,並在B列中指定內容。實現這一目標? 本文將提供一種VBA方法來詳細處理它。

根據Excel中的單元格值自動發送電子郵件
假設您要基於Excel中指定的單元格值通過Outlook向特定收件人發送電子郵件。 例如,當工作表中單元格D7的值大於200時,將自動創建一封電子郵件。 本文介紹了一種VBA方法供您快速解決此問題。

有關在Excel中發送郵件的更多教程...


最佳辦公效率工具

Kutools for Excel 解決了你的大部分問題,並將你的生產力提高了 80%

  • 重用: 快速插入 複雜的公式,圖表 以及您以前使用過的任何東西; 加密單元 帶密碼 創建郵件列表 並發送電子郵件...
  • 超級公式欄 (輕鬆編輯多行文本和公式); 閱讀版式 (輕鬆讀取和編輯大量單元格); 粘貼到過濾範圍...
  • 合併單元格/行/列 不會丟失數據; 拆分單元格內容; 合併重複的行/列...防止細胞重複; 比較範圍...
  • 選擇重複或唯一 行; 選擇空白行 (所有單元格都是空的); 超級查找和模糊查找 在許多工作簿中; 隨機選擇...
  • 確切的副本 多個單元格,無需更改公式參考; 自動創建參考 到多張紙; 插入項目符號,複選框等...
  • 提取文字,添加文本,按位置刪除, 刪除空間; 創建和打印分頁小計; 在單元格內容和註釋之間轉換...
  • 超級濾鏡 (將過濾方案保存並應用於其他工作表); 高級排序 按月/週/日,頻率及更多; 特殊過濾器 用粗體,斜體...
  • 結合工作簿和工作表; 根據關鍵列合併表; 將數據分割成多個工作表; 批量轉換xls,xlsx和PDF...
  • 超過 300 項強大的功能. 支持 Office / Excel 2007-2021 和 365。支持所有語言。 在您的企業或組織中輕鬆部署。 完整功能 30 天免費試用。 60 天退款保證。
kte選項卡201905

Office選項卡為Office帶來了選項卡式界面,使您的工作更加輕鬆

  • 在Word,Excel,PowerPoint中啟用選項卡式編輯和閱讀,發布者,Access,Visio和Project。
  • 在同一窗口的新選項卡中而不是在新窗口中打開並創建多個文檔。
  • 將您的工作效率提高 50%,每天為您減少數百次鼠標點擊!
officetab底部
按評論排序
留言 (20)
4.5中的5評分 · 1評級
網站主持人對此評論進行了最小化
這段代碼很棒,但我需要使用命令按鈕執行,而不是在代碼視圖中按 F5。 我希望我的員工能夠填寫一些信息,然後點擊按鈕並讓它複製他們完成的單元格範圍並粘貼到電子郵件中。 我可以讓代碼為電子郵件按鈕工作,並分別為單元格範圍的複制/粘貼工作,但似乎無法結合這兩個功能。 請幫忙!!! 謝謝!
網站主持人對此評論進行了最小化
嗨邁克爾,
您只需要在工作表中創建一個按鈕(例如按鈕(表單控件)),然後將宏分配給該按鈕。
網站主持人對此評論進行了最小化
嗨水晶,謝謝!
我創建了一個代碼,想知道如何將命令按鈕分配給代碼。 你的帖子有幫助! 我的報告就像一個魅力。

再次感謝。
網站主持人對此評論進行了最小化
這很棒。 它按預期工作。 唯一的問題是郵件中沒有維護表格的格式。 你能告訴我我們如何在郵件中保留表格的格式嗎
網站主持人對此評論進行了最小化
Hi
通過使用我已經完成了我 90% 的項目的代碼,這段代碼非常出色。
我有與 Anirudh 提到的相同的問題,即表格格式。 如何在電子郵件中格式化表格。
請幫我......
網站主持人對此評論進行了最小化
美好的一天,
問題還不能解決。 很抱歉給您帶來不便,並感謝您的評論。
網站主持人對此評論進行了最小化
你好,下面有更新嗎......
網站主持人對此評論進行了最小化
嗨,我還想要“按日期過濾”的代碼。
我正在做一個項目,在那個項目上我想按日期過濾數據,實際上我們已經過濾/隱藏了當前日期數據的最後 05 天,並且我們突出顯示了所有其他數據。
請幫我完成這個項目。
你的幫助對我來說非常棒。
網站主持人對此評論進行了最小化
確定後選擇後自動發送的代碼
網站主持人對此評論進行了最小化
這是粘貼為文本。 請建議如何發送表格或從excel複製的相同格式。
網站主持人對此評論進行了最小化
我看到一個編譯錯誤(未定義用戶定義的類型”。請幫我解決這個問題。
網站主持人對此評論進行了最小化
嗨,
請通過單擊工具 > 參考進入參考窗口。 向下滾動以找到並檢查 Microsoft Outlook 對像庫框,然後單擊確定按鈕完成設置。
網站主持人對此評論進行了最小化
嗨專家,我們有關於如何維護格式的更新嗎?
網站主持人對此評論進行了最小化
嗨,
想不通。 對此感到抱歉。
網站主持人對此評論進行了最小化
嗨,
我不想手動選擇範圍,而是想自動選擇範圍。
網站主持人對此評論進行了最小化
嗨拉曼,
在下面的代碼中,請將 Set xRg = Range("A1:C5") 行中的範圍“A1:C5”替換為您自己的範圍。

子 Send_Email()
將 xRg 調暗為範圍
昏暗的我,J一樣長
將 xAddress 變暗為字符串
將 xEmailBody 調暗為字符串
將 xMailOut 調暗為 Outlook.MailItem
將 xOutApp 調暗為 Outlook.Application
在錯誤恢復下一頁
xAddress = ActiveWindow.RangeSelection.Address
設置 xRg = Range("A1:C5")
如果 xRg 什麼都不是,則退出 Sub
Application.ScreenUpdating = False
設置 xOutApp = CreateObject("Outlook.Application")
設置 xMailOut = xOutApp.CreateItem(olMailItem)
對於 I = 1 到 xRg.Rows.Count
對於 J = 1 到 xRg.Columns.Count
xEmailBody = xEmailBody & " " & xRg.Cells(I, J).Value
下一頁
xEmailBody = xEmailBody & vbNewLine
下一頁
xEmailBody =“嗨”&vbLf&vbLf&“您要添加的郵件正文”&vbLf&vbLf&xEmailBody&vbNewLine
使用xMailOut
.Subject = "測試"
.To = "happy.xuebi@163.com"
.Body = xEmailBody
。顯示
'。發送
結束
設置 xMailOut = 無
設置 xOutApp = 無
Application.ScreenUpdating = True
END SUB
網站主持人對此評論進行了最小化
嗨,
我不想選擇範圍,而是想在 excel 中選擇多個樞軸。
你能幫我麼。
網站主持人對此評論進行了最小化
您好,
你能在下面幫我嗎
我創建了 excel 表並更新了 10 個供應商郵件詳細信息我已通過 excel 向所有 10 個供應商發送郵件,並附有單獨的表格附件和單獨的郵件。
我想將 Excel 數據粘貼到 Outlook 正文而不是郵件中的附件
誰能幫我
網站主持人對此評論進行了最小化
唯一的問題是郵件中沒有維護表格的格式。 你能告訴我我們如何在郵件中保留表格的格式,我有同樣的問題,你能看看你是否可以更新它,否則這很好。
非常感謝
4.5中的5評分
網站主持人對此評論進行了最小化
嗨安迪米切爾,
如果你想保持表格的格式,下面的 VBA 腳本可以幫你一個忙。 請試一試。 謝謝你。
Sub Send_Email()
'Updated by Extendoffice 20220616
    Dim xRg As Range
    Dim I, J As Long
    Dim xAddress As String
    Dim xMailOut As Object
    Dim xOutApp As Object
    On Error Resume Next
    Set xOutApp = CreateObject("Outlook.Application")
    Set xMailOut = xOutApp.CreateItem(olMailItem)
    xAddress = ActiveWindow.RangeSelection.Address
    Set xRg = Application.InputBox("Please select range you need to paste into email body", "KuTools For Excel", xAddress, , , , , 8)
If xRg Is Nothing Then Exit Sub
Application.ScreenUpdating = False
    Set xOutApp = CreateObject("Outlook.Application")
    Set xMailOut = xOutApp.CreateItem(olMailItem)
    With xMailOut
        .Subject = "Test"
        .To = "happy.xuebi@163.com"
        .HTMLBody = RangetoHTML(xRg)
        .Display
        '.Send
    End With
    Set xMailOut = Nothing
    Set xOutApp = Nothing
    Application.ScreenUpdating = True
End Sub

 ' The following VBA script is cited from this page:
 ' https://stackoverflow.com/questions/18663127/paste-excel-range-in-outlook
Function RangetoHTML(rng As Range)
' By Ron de Bruin.
    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   字符
推薦地點

關注我們

版權所有©2009 - 萬維網。extendoffice.com。 | 版權所有。 供電 ExtendOffice。 |
Microsoft和Office徽標是Microsoft Corporation在美國和/或其他國家的商標或註冊商標。
受Sectigo SSL保護