如何使用vba指令碼從excel電子表格傳送電子郵件

我們的程式碼模板將幫助您使用協作資料物件(CDO)和VBA指令碼從Excel中設定自動電子郵件。...

從microsoftexcel發送電子郵件只需要幾個簡單的腳本。將此功能添加到您的電子表格中,您就可以真正提高您在Excel中所能完成的工作。

excel-send-email-featured

我們已經介紹了很多優秀的Excel宏,它們可以完成VBA腳本所能完成的同樣的事情,但是不需要編程知識。但是有很多高級的事情你只能用VBA來做,比如用你所有的PC信息創建一個電子表格報告。

喜歡把這個教程當作視頻看嗎?我們掩護你!

為什麼從excel發送電子郵件?

您可能希望從Microsoft Excel內部發送電子郵件的原因有很多。

也許你有每週更新文檔或電子表格的員工,並且你希望收到一封電子郵件通知,告知何時完成這些更新。或者你可能有一個電子表格的聯繫人,你想發送一封電子郵件給所有的人在一次。

您可能認為從Excel編寫電子郵件廣播腳本會很複雜。事實並非如此。

本文中的技術將利用excelvba中長期存在的一個特性,即協作數據對象(CDO)。

collaboration data objects (CDO) in excel

CDO是Windows中使用的消息傳遞組件,從操作系統的早期版本就開始了。它以前被稱為CDONTS,後來隨著windows2000和XP的出現,被“windows2000的CDO”所取代。此組件已包含在Microsoft Word或Excel中的VBA安裝中,可以使用。

使用該組件可以非常輕鬆地從帶有VBA的Windows產品中發送電子郵件。在本例中,您將使用Excel中的CDO組件發送一封電子郵件,該電子郵件將傳遞特定Excel單元格的結果。

步驟1:創建vba宏

第一步是轉到Excel開發人員選項卡。

在“開發人員”選項卡中,單擊“控件”框中的“**”,然後選擇一個命令按鈕。

adding button in excel

將其繪製到工作表中,然後通過單擊“開發人員”功能區中的“宏”為其創建新宏。

add macro for command button

單擊“創建”按鈕時,它將打開VBA編輯器。

通過導航到編輯器中的“工具”>“引用”,添加對CDO庫的引用。

adding references in excel

向下滾動列表,直到找到Microsoft CDO for Windows 2000庫。標記複選框並單擊“確定”。

adding cdo for windows reference

單擊“確定”時,記下要粘貼腳本的函數的名稱。你以後會需要的。

第2步:設置cdo“from”和“to”字段

為此,首先需要創建郵件對象並設置發送電子郵件所需的所有字段。

請記住,雖然許多字段是可選的,但From和To字段是必需的。

Dim CDO_Mail As ObjectDim CDO_Config As ObjectDim SMTP_Config As VariantDim strSubject As StringDim strFrom As StringDim strTo As StringDim strCc As StringDim strBcc As StringDim strBody As StringstrSubject = "Results from Excel Spreadsheet"strFrom = "[email protected]"strTo = "[email protected]"strCc = ""strBcc = ""strBody = "The total results for this quarter are: " & Str(Sheet1.Cells(2, 1))

很酷的一點是,您可以創建任何字符串來定製完整的電子郵件消息,並將其分配給strBody變量。

通過使用字符串將任何Microsoft Excel工作表中的數據直接**到電子郵件中,將郵件的組件拼湊在一起,如上圖所示。

步驟3:配置cdo以使用外部**tp

代碼的下一部分是將CDO配置為使用任何外部SMTP服務器發送電子郵件。

這個例子是通過Gmail進行的非SSL設置。CDO支持SSL,但這超出了本文的範圍。如果您需要使用SSL,Github中的這個高級代碼可以提供幫助。

Set CDO_Mail = CreateObject("CDO.Message")On Error GoTo Error_HandlingSet CDO_Config = CreateObject("CDO.Configuration")CDO_Config.Load -1Set SMTP_Config = CDO_Config.FieldsWith SMTP_Config .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 .Item("http://schemas.microsoft.com/cdo/configuration/**tpserver") = "**tp.gmail.com" .Item("http://schemas.microsoft.com/cdo/configuration/**tpauthenticate") = 1 .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "[email protected]" .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "password" .Item("http://schemas.microsoft.com/cdo/configuration/**tpserverport") = 25 .Item("http://schemas.microsoft.com/cdo/configuration/**tpusessl") = True .UpdateEnd WithWith CDO_Mail Set .Configuration = CDO_ConfigEnd With

步驟4:完成cdo設置

既然您已經配置了到SMTP服務器的連接以發送電子郵件,那麼您所要做的就是為CDO\u Mail對象填寫適當的字段,併發出Send命令。

下面是如何做到這一點:

CDO_Mail.Subject = strSubjectCDO_Mail.From = strFromCDO_Mail.To = strToCDO_Mail.TextBody = strBodyCDO_Mail.CC = strCcCDO_Mail.BCC = strBccCDO_Mail.SendError_Handling:If Err.Description <> "" Then MsgBox Err.Description

當您使用Outlook郵件對象時,不會出現任何彈出框或安全警報消息。

CDO只需將電子郵件放在一起,並利用您的SMTP服務器連接詳細信息來觸發消息。這是將電子郵件合併到Microsoft Word或Excel VBA腳本中的最簡單方法。

要將命令按鈕連接到此腳本,請進入“代碼編輯器”並單擊“工作表1”以查看該工作表的VBA代碼。

鍵入在上面粘貼腳本的函數的名稱。

connect command button to script

以下是我在收件箱中收到的信息:

excel email received

注意:如果您收到一個讀取傳輸連接到服務器失敗的錯誤,請確保在下面列出的代碼行中輸入了正確的用戶名、密碼、SMTP服務器和端口號以及SMTP配置。

更進一步,使整個過程自動化

只需按一下按鈕就可以從Excel發送電子郵件,這一切都很好。但是,您可能希望定期使用此功能,在這種情況下,自動化流程是有意義的。

為此,需要對宏進行更改。轉到visualbasic編輯器,複製並粘貼我們放在一起的全部代碼。

接下來,從項目層次結構中選擇ThisWorkbook。

從“代碼”窗口頂部的兩個下拉字段中,選擇“工作簿”,然後從“方法”下拉列表中選擇“打開”。

將上面的電子郵件腳本粘貼到私有子工作簿\u Open()中。

每當您打開Excel文件時,這將運行宏。

Paste the email script

接下來,打開任務調度器。

您將使用此工具要求Windows定期自動打開電子表格,此時將啟動宏併發送電子郵件。

create basic task in task scheduler

選擇創建基本任務。。。從“操作”菜單中,通過嚮導進行操作,直到到達“操作”屏幕。

選擇“啟動程序”,然後單擊“下一步”。

select program task scheduler

使用“瀏覽”按鈕查找Microsoft Excel在計算機上的位置,或將路徑複製並粘貼到“程序/腳本”字段中。

然後,在“添加參數”字段中輸入Microsoft Excel文檔的路徑。

完成嚮導後,您的日程安排就會就緒。

運行一個測試是值得的,方法是將操作安排在未來的幾分鐘內,然後在確認任務有效後修改它。

注意:您可能需要調整信任中心設置以確保宏正常運行。

為此,請打開電子表格並導航到“文件”&gt;“選項”&gt;“信任中心”。

從這裡單擊“信任中心設置”,然後在下一個屏幕上,將無線電撥號設置為從不顯示有關被阻止內容的信息。

讓microsoft excel為您工作

microsoftexcel是一個非常強大的工具,但是學習如何最大限度地利用它可能有點嚇人。如果你想真正掌握這個軟件,你需要熟悉VBA,這不是一個小任務。

然而,結果不言自明。有了一點VBA經驗,你很快就能讓microsoftexcel自動執行基本任務,讓你有更多的時間專注於更緊迫的事情。

用VBA建立專業知識需要時間,但是如果你能堅持下去,你很快就會看到你的勞動成果。

一個很好的開始是我們的權威教程在Excel中使用VBA。一旦你完成了,這個簡單的腳本發送電子郵件從Excel將感覺像孩子的遊戲。

  • 發表於 2021-03-22 18:44
  • 閱讀 ( 49 )
  • 分類:網際網路

你可能感興趣的文章

5個有用的vb windows指令碼,可自動使用計算機

... 可以學習如何以正常的方式完成所有這些單獨的事情,或者使用批處理檔案來完成它們。但是VB指令碼比批處理指令碼好,因為它們更靈活。如果您將以下指令碼儲存在一個公共位...

  • 發佈於 2021-03-11 20:14
  • 閲讀 ( 54 )

如何在一分鐘內對excel檔案進行密碼保護

... 如何對excel檔案進行密碼保護? ...

  • 發佈於 2021-03-12 07:52
  • 閲讀 ( 49 )

如何將一個巨大的csv excel電子表格分割成單獨的檔案

...會遇到它的一個缺點:電子表格的大小。繼續閱讀,瞭解如何縮小Excel電子表格或將大型CSV檔案拆分為多個檔案。 ...

  • 發佈於 2021-03-12 16:05
  • 閲讀 ( 60 )

如何將excel資料整合到word文件中

... 一旦您知道如何新增正確的引用,以及如何佈局後臺VBA程式碼的語法,那麼將microsoftexcel資料整合到microsoftword中就非常容易了。 ...

  • 發佈於 2021-03-13 07:56
  • 閲讀 ( 44 )

5 excel文件設定您千萬不要忘記檢查

...們的其他技巧和竅門,比如在Excel中建立下拉列表,瞭解如何在Excel公式中使用IF語句,以及使用Excel的Goal Seek功能計算資料。 ...

  • 發佈於 2021-03-13 08:07
  • 閲讀 ( 49 )

如何構建vba巨集的自定義excel工具欄

... 下面是如何開始使用自定義工具欄。 ...

  • 發佈於 2021-03-13 16:39
  • 閲讀 ( 51 )

如何使用郵件合併在outlook中傳送個性化的批次電子郵件

郵件合併就像你多年沒聯絡的老朋友。被低估和忽視,直到有一天你非常需要它們。 ...

  • 發佈於 2021-03-14 03:10
  • 閲讀 ( 58 )

如何用google指令碼在google表單中傳送電子郵件

...gle指令碼,並將結果分發給所有人。您將在本文底部看到如何自定義這個新選單項。 ...

  • 發佈於 2021-03-14 04:11
  • 閲讀 ( 45 )

5個excel巨集資源,用於自動化電子表格

...應通常會解釋使用某些技術背後的思維過程,而不僅僅是如何執行它們。 ...

  • 發佈於 2021-03-14 21:59
  • 閲讀 ( 42 )

如何在excel 2016中錄製巨集

...使用巨集是實現任務自動化的最佳方法。我們將向您展示如何在Excel 2016中錄製巨集,以便您可以騰出時間,不再將時間浪費在重複操作上。 ...

  • 發佈於 2021-03-15 08:22
  • 閲讀 ( 51 )