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

如果在Excel中單擊按鈕,如何發送電子郵件?

假設您需要通過單擊Excel工作表中的按鈕來通過Outlook發送電子郵件,該怎麼辦? 本文將詳細介紹一種VBA方法來實現它。

如果使用VBA代碼單擊按鈕,則發送電子郵件


如果使用VBA代碼單擊按鈕,則發送電子郵件

如果在Excel工作簿中單擊了命令按鈕,請執行以下操作以通過Outlook發送電子郵件。

1.通過單擊在您的工作表中插入一個命令按鈕 開發人員 > 插入 > 命令按鈕(ActiveX控件)。 看截圖:

2.右鍵單擊插入的命令按鈕,然後單擊 查看代碼 從右鍵單擊菜單中,如下圖所示。

3.在開幕 Microsoft Visual Basic for Applications 窗口,請使用以下VBA腳本替換“代碼”窗口中的原始代碼。

VBA代碼:如果在Excel中單擊了按鈕,則發送電子郵件

Private Sub CommandButton1_Click()
'Updated by Extendoffice 2017/9/14
    Dim xOutApp As Object
    Dim xOutMail As Object
    Dim xMailBody As String
    On Error Resume Next
    Set xOutApp = CreateObject("Outlook.Application")
    Set xOutMail = xOutApp.CreateItem(0)
    xMailBody = "Body content" & vbNewLine & vbNewLine & _
              "This is line 1" & vbNewLine & _
              "This is line 2"
                  On Error Resume Next
    With xOutMail
        .To = "Email Address"
        .CC = ""
        .BCC = ""
        .Subject = "Test email send by button clicking"
        .Body = xMailBody
        .Display   'or use .Send
    End With
    On Error GoTo 0
    Set xOutMail = Nothing
    Set xOutApp = Nothing
End Sub

筆記:

1)。 請根據需要更改電子郵件正文 郵件正文 代碼中的一行。

2)。 更換 電子郵件 收件人電子郵件地址在一行 .To =“電子郵件地址”.

3)。 根據需要指定抄送和密件抄送收件人 .CC =“” .Bcc =“” 部分。

4)。 更改電子郵件主題 .Subject =“通過單擊按鈕測試電子郵件發送”.

4。 按 其他 + Q 同時關閉按鍵 Microsoft Visual Basic for Applications 窗口。

5.通過單擊關閉設計模式 開發人員 > 設計模式。 看截圖:

從現在開始,每次單擊命令按鈕,都會自動創建一封帶有指定收件人,主題和正文的電子郵件。 請通過單擊發送電子郵件 發送 按鈕。

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

根據Excel中已創建的郵件列表的字段,通過Outlook輕鬆發送電子郵件:

發電子郵件 的效用 Excel的Kutools 根據在Excel中創建的郵件列表的字段,幫助通過Outlook發送電子郵件。
立即下載並試用! (30-天免費試用)


相關文章:


最佳辦公效率工具

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底部
按評論排序
留言 (73)
3.5中的5評分 · 1評級
網站主持人對此評論進行了最小化
嗨,我正在尋找從數據透視表數據發送數據,你能幫忙嗎
網站主持人對此評論進行了最小化
是否可以編寫腳本,以便當您單擊按鈕時,它會像上面一樣將自己附加到電子郵件但也刪除按鈕? 以便通過電子郵件發送的文件副本上不再有按鈕?
網站主持人對此評論進行了最小化
在“.Body = xMailBody”下方添加以下內容
.Attachments.Add ActiveWorkbook.FullName
網站主持人對此評論進行了最小化
嗨,丹妮。

我按照您所說的添加了該部分,但是帶有附加工作簿的電子郵件仍然打開了按鈕。
網站主持人對此評論進行了最小化
嗨,是否可以進行設置,以便我不必按發送 - 它會自動發送電子郵件????
網站主持人對此評論進行了最小化
嗨,
請將上述 VBA 代碼中的 .Display 行替換為 .Send 行。
網站主持人對此評論進行了最小化
它只生成一封電子郵件,並將繼續覆蓋內容,而不是打開多個電子郵件草稿。
網站主持人對此評論進行了最小化
大家好,首先非常感謝您,這篇文章非常有幫助,適用於附件。 這對我有用,但沒有更新保存在您必須點擊保存按鈕的工作表中。 我希望附件包含當前在 excel 表中的任何內容。

我可以通過使用 excel 內置的電子郵件功能來完成此操作,但我想要一個按鈕,因為我需要硬編碼特定的電子郵件地址。

總而言之,我想知道:

我想知道是否有辦法:在用戶打開 excel 工作簿並進行編輯後,如果按鈕將保持附件的更新?
網站主持人對此評論進行了最小化
美好的一天,
代碼已經優化。 請試一試,感謝您的評論。

Private Sub CommandButton1_Click()
'更新者 Extendoffice 2017/9/14
將 xOutApp 調暗為對象
將 xOutMail 調暗為對象
將 xMailBody 調暗為字符串
在錯誤恢復下一頁
設置 xOutApp = CreateObject("Outlook.Application")
設置 xOutMail = xOutApp.CreateItem(0)
ActiveWorkbook.Save
xMailBody = "正文內容" & vbNewLine & vbNewLine & _
“這是第 1 行” & vbNewLine & _
“這是第 2 行”
在錯誤恢復下一頁
使用 xOutMail
.To =“電子郵件地址”
.CC =“”
.BCC =“”
.Subject =“通過單擊按鈕測試電子郵件發送”
.Body = xMailBody
.Attachments.Add ActiveWorkbook.FullName
.Display '或使用 .Send
結束
在錯誤轉到0
設置 xOutMail = 無
設置 xOutApp = 無
END SUB
網站主持人對此評論進行了最小化
當我按下按鈕時,如何將活動工作簿附加到電子郵件中?
網站主持人對此評論進行了最小化
美好的一天,
在“.Body = xMailBody”下方添加以下內容
.Attachments.Add ActiveWorkbook.FullName
網站主持人對此評論進行了最小化
Teria como em vez de enviar a planilha, enviar as informações em imagem?
網站主持人對此評論進行了最小化
使用此 VBA 代碼,我可以在電子郵件正文中引用單元格信息嗎? 例如,我如何將單元格值引用到下面的代碼?

xMailBody = "正文內容" & vbNewLine & vbNewLine & _
“這是第 1 行” & vbNewLine & _
“這是第 2 行”

此外,使用 (.TO = "email address") 代碼。 如何讓“電子郵件地址”從旁邊列中的單元格中提取電子郵件地址。


謝謝,
網站主持人對此評論進行了最小化
是否可以在同一個工作表中添加第二個電子郵件按鈕? 當我嘗試這樣做時,它正在從原始電子郵件按鈕連接到代碼。 謝謝。
網站主持人對此評論進行了最小化
嗨,
您需要為每個按鈕分配不同的代碼。
網站主持人對此評論進行了最小化
使用此 VBA 代碼,我可以在電子郵件正文中引用單元格信息嗎? 例如,我如何將單元格值引用到下面的代碼?

xMailBody = "正文內容" & vbNewLine & vbNewLine & _
“這是第 1 行” & vbNewLine & _
“這是第 2 行”

謝謝,
網站主持人對此評論進行了最小化
嗨格倫,
請應用以下代碼。 感謝您的評論。
xMailBody = [B5]
網站主持人對此評論進行了最小化
是否可以發送指向文件(位於 SharePoint 上)的超鏈接,而不是在電子郵件中發送附件?
網站主持人對此評論進行了最小化
嗨勞裡,
幫不了你。 感謝您的評論。
網站主持人對此評論進行了最小化
我可以用字符串引用主題中單元格中的值嗎? 下面的一些變化?

.Subject = "新事件:" & Target.Address = "$B$38"
網站主持人對此評論進行了最小化
嗨,阿比,
請將代碼更改為 .Subject = "New Event:" & [B38]。
感謝您的評論。
網站主持人對此評論進行了最小化
你好!
任何人都可以幫助我滿足以下要求嗎?
我有一個包含兩個下拉列表的 Excel 表。

1個下拉列表-部門列表

2 下拉列表 - 類別

我想要的是當我從列表中選擇一個部門和類別時;(例如,如果我在部門中選擇“銷售”,在類別中選擇“月度報告”)

我需要將該工作表的 PDF 版本通過電子郵件發送給銷售團隊,電子郵件主題是月度報告。

如果我從部門列表中選擇“生產”,則電子郵件應該發送給生產中的一組人。

如果您能在這方面幫助我,我將不勝感激

拉西克
網站主持人對此評論進行了最小化
嗨拉西克,
抱歉不能幫你。 歡迎在我們的論壇發表任何問題: https://www.extendoffice.com/forum.html 從 Excel 專業人士或其他 Excel 粉絲那裡獲得更多 Excel 支持。
網站主持人對此評論進行了最小化
嗨,

如何讓郵件自動從 Outlook 添加我的簽名?
網站主持人對此評論進行了最小化
你好,約翰,
下面的 VBA 代碼可以幫助您解決問題。 謝謝你的評論。

Private Sub CommandButton1_Click()
'更新者 Extendoffice 2019/6/26
將 xOutApp 調暗為對象
將 xOutMail 調暗為對象
在錯誤恢復下一頁
設置 xOutApp = CreateObject("Outlook.Application")
設置 xOutMail = xOutApp.CreateItem(0)
使用 xOutMail
.Display '或使用 .Send
.To =“電子郵件地址”
.CC =“”
.BCC =“”
.Subject =“通過單擊按鈕測試電子郵件發送”
.HTMLBody = "這是用 Excel 發送的測試電子郵件" & "
" & .HTML正文
'。發送
結束
在錯誤轉到0
設置 xOutMail = 無
設置 xOutApp = 無
END SUB
網站主持人對此評論進行了最小化
按下按鈕發送電子郵件時,您必須是 excel 用戶嗎? 還是只有接收電子郵件的人必須是 Outlook 用戶?
網站主持人對此評論進行了最小化
美好的一天,
由於在 Excel 中單擊按鈕後需要通過 Outlook 發送電子郵件,因此您必須在計算機中安裝 Outlook 才能使其工作。
網站主持人對此評論進行了最小化
我想在電子郵件中發送 excel 工作表,但它沒有發送。 您如何編寫代碼以將文檔作為電子郵件發送
網站主持人對此評論進行了最小化
嗨,馬庫斯,
下面的 VBA 代碼可以幫助您解決問題。

子發送工作表()
'更新 20190626
將 xFile 調暗為字符串
將 xFormat 變暗
將 Wb 調暗為工作簿
將 Wb2 調暗為工作簿
將文件路徑變暗為字符串
昏暗的FileName作為字符串
將 OutlookApp 調暗為對象
將 OutlookMail 調暗為對象
在錯誤恢復下一頁
Application.ScreenUpdating = False
設置 Wb = Application.ActiveWorkbook
ActiveSheet.複製
設置 Wb2 = Application.ActiveWorkbook
選擇案例 Wb.FileFormat
案例 xlOpenXMLWorkbook:
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
案例 xlOpenXMLWorkbookMacroEnabled:
如果 Wb2.HasVBProject 然後
xFile = ".xlsm"
xFormat = xlOpenXMLWorkbookMacroEnabled
其他
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
如果結束
案例Excel8:
xFile = ".xls"
x格式 = Excel8
案例 xlExcel12:
xFile = ".xlsb"
xFormat = xlExcel12
最終選擇
FilePath = Environ$("temp") & "\"
FileName = Wb.Name & Format(現在,“dd-mmm-yy h-mm-ss”)
設置 OutlookApp = CreateObject("Outlook.Application")
設置 OutlookMail = OutlookApp.CreateItem(0)
Wb2.SaveAs FilePath & FileName & xFile, FileFormat:=xFormat
使用 OutlookMail
.To =“ skyyang @extendoffice.com”
.CC =“”
.BCC =“”
.Subject =“ KTE功能”
.Body =“請檢查並閱讀本文檔。”
.Attachments.Add Wb2.FullName
。顯示
'。發送
結束
Wb2.關閉
殺死 FilePath & FileName & xFile
設置 OutlookMail = 無
設置 OutlookApp = 無
Application.ScreenUpdating = True
END SUB
網站主持人對此評論進行了最小化
當我按下按鈕時,如何將活動工作表附加到電子郵件中?
網站主持人對此評論進行了最小化
嗨格蘭特,
請右鍵單擊按鈕並選擇查看代碼,然後在 Private Sub 和 End Sub 行之間複製以下代碼。 希望我能幫上忙。 謝謝你的評論。

將 xFile 調暗為字符串
將 xFormat 變暗
將 Wb 調暗為工作簿
將 Wb2 調暗為工作簿
將文件路徑變暗為字符串
昏暗的FileName作為字符串
將 OutlookApp 調暗為對象
將 OutlookMail 調暗為對象
在錯誤恢復下一頁
Application.ScreenUpdating = False
設置 Wb = Application.ActiveWorkbook
ActiveSheet.複製
設置 Wb2 = Application.ActiveWorkbook
選擇案例 Wb.FileFormat
案例 xlOpenXMLWorkbook:
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
案例 xlOpenXMLWorkbookMacroEnabled:
如果 Wb2.HasVBProject 然後
xFile = ".xlsm"
xFormat = xlOpenXMLWorkbookMacroEnabled
其他
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
如果結束
案例Excel8:
xFile = ".xls"
x格式 = Excel8
案例 xlExcel12:
xFile = ".xlsb"
xFormat = xlExcel12
最終選擇
FilePath = Environ$("temp") & "\"
FileName = Wb.Name & Format(現在,“dd-mmm-yy h-mm-ss”)
設置 OutlookApp = CreateObject("Outlook.Application")
設置 OutlookMail = OutlookApp.CreateItem(0)
Wb2.SaveAs FilePath & FileName & xFile, FileFormat:=xFormat
使用 OutlookMail
.To =“ skyyang @extendoffice.com”
.CC =“”
.BCC =“”
.Subject =“ KTE功能”
.Body =“請檢查並閱讀本文檔。”
.Attachments.Add Wb2.FullName
。顯示
'。發送
結束
Wb2.關閉
殺死 FilePath & FileName & xFile
設置 OutlookMail = 無
設置 OutlookApp = 無
Application.ScreenUpdating = True
網站主持人對此評論進行了最小化
嗨,

有沒有辦法在附加到電子郵件時將文件名更改為當前日期?
網站主持人對此評論進行了最小化
嗨,

我一直在寫一張紙,但我無法完成它。 我希望你能幫助我:)

該文件本身必須是一個 xltm(模板),並且它必須在郵件中附加它自己的工作表。

還有一個自動簽名,那我會很高興的。

在此先感謝/博士。 馕
網站主持人對此評論進行了最小化
嗨,我運行了一個包含 80 個個人酒吧帳戶的電子表格,並在此頁面上使用了 VBA 代碼並取得了很大成功。 但是,在電子郵件的正文中,我想在發送時復制並粘貼帳戶的特定單元格範圍,以便客戶可以獲得歷史記錄。 你能幫忙用 VBA 代碼嗎?
網站主持人對此評論進行了最小化
你好! 非常感謝你做的這些。 這是非常棒的幫助。

是否可以通過按按鈕而不是整個工作簿來發送活動工作表?

謝謝!
這裡還沒有評論
載入更多
留下你的意見
以訪客身份發帖
×
評價此帖子:
0   字符
推薦地點

關注我們

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