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

如果在Excel中已達到到期日期,如何發送電子郵件?

如下圖所示,如果 C 列中的到期日小於或等於 7 天(例如,當前日期為 2017/9/13),則會向 A 列中的指定收件人發送一封電子郵件,並且B 列中的指定內容顯示在電子郵件正文中。 你怎麼做才能實現它? 本文提供了一個 VBA 代碼來幫助您完成此任務。

如果截止日期已達到VBA代碼,則發送電子郵件


如果截止日期已達到VBA代碼,則發送電子郵件

如果在Excel中已達到到期日期,請執行以下操作以發送電子郵件提醒。

1。 按 其他 + F11 同時打開 Microsoft Visual Basic for Applications 窗口。

2。 在裡面 Microsoft Visual Basic for Applications 窗口,請點擊 插入 > 模塊。 然後將下面的VBA代碼複製並粘貼到“模塊”窗口中。

VBA代碼:如果在Excel中關閉了到期日,則發送電子郵件

Public Sub CheckAndSendMail()
'Updated by Extendoffice 2018/11/22
    Dim xRgDate As Range
    Dim xRgSend As Range
    Dim xRgText As Range
    Dim xRgDone As Range
    Dim xOutApp As Object
    Dim xMailItem As Object
    Dim xLastRow As Long
    Dim vbCrLf As String
    Dim xMailBody As String
    Dim xRgDateVal As String
    Dim xRgSendVal As String
    Dim xMailSubject As String
    Dim i As Long
    On Error Resume Next
    Set xRgDate = Application.InputBox("Please select the due date column:", "KuTools For Excel", , , , , , 8)
    If xRgDate Is Nothing Then Exit Sub
    Set xRgSend = Application.InputBox("Please select the recipients?email column:", "KuTools For Excel", , , , , , 8)
    If xRgSend Is Nothing Then Exit Sub
    Set xRgText = Application.InputBox("Select the column with reminded content in your email:", "KuTools For Excel", , , , , , 8)
    If xRgText Is Nothing Then Exit Sub
    xLastRow = xRgDate.Rows.count
    Set xRgDate = xRgDate(1)
    Set xRgSend = xRgSend(1)
    Set xRgText = xRgText(1)
    Set xOutApp = CreateObject("Outlook.Application")
    For i = 1 To xLastRow
        xRgDateVal = ""
        xRgDateVal = xRgDate.Offset(i - 1).Value
        If xRgDateVal <> "" Then
        If CDate(xRgDateVal) - Date <= 7 And CDate(xRgDateVal) - Date > 0 Then
            xRgSendVal = xRgSend.Offset(i - 1).Value
            xMailSubject = xRgText.Offset(i - 1).Value & " on " & xRgDateVal
            vbCrLf = "<br><br>"
            xMailBody = "<HTML><BODY>"
            xMailBody = xMailBody & "Dear " & xRgSendVal & vbCrLf
            xMailBody = xMailBody & "Text : " & xRgText.Offset(i - 1).Value & vbCrLf
            xMailBody = xMailBody & "</BODY></HTML>"
            Set xMailItem = xOutApp.CreateItem(0)
            With xMailItem
                .Subject = xMailSubject
                .To = xRgSendVal
                .HTMLBody = xMailBody
                .Display
                '.Send
            End With
            Set xMailItem = Nothing
        End If
    End If
    Next
    Set xOutApp = Nothing
End Sub

筆記:線 如果CDate(xRgDateVal)-日期<= 7CDate(xRgDateVal)-日期> 0 然後,在VBA代碼中,意味著到期日期必須大於1天且小於或等於7天。 您可以根據需要進行更改。

3。 按 F5鍵運行代碼。 在第一個彈出 Excel的Kutools 對話框中,請選擇截止日期列範圍,然後單擊 OK 按鈕。 看截圖:

4.然後第二 Excel的Kutools 彈出對話框,請選擇包含收件人電子郵件地址的相應列範圍,然後單擊 OK 按鈕。 看截圖:

5.最後 Excel的Kutools 對話框中,選擇要在電子郵件正文中顯示的內容,然後單擊 OK 按鈕。

然後,如果C列中的截止日期少於或等於7天,則會自動創建一封電子郵件,列出指定的收件人,主題和正文。 請點擊 發送 按鈕發送電子郵件。

筆記:

1.每個創建的電子郵件都對應一個截止日期。 例如,如果有三個到期日期符合條件,則將自動創建三封電子郵件。

2.如果沒有符合條件的日期,則不會觸發此代碼。

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


相關文章:


最佳辦公效率工具

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底部
按評論排序
留言 (124)
4.5中的5評分 · 1評級
網站主持人對此評論進行了最小化
謝謝你的分享。


您將如何添加抄送輸入或多個收件人?
網站主持人對此評論進行了最小化
嗨布蘭登,

很抱歉在沒有答案的情況下評論您的帖子,但您是否能夠獲得 VBA 代碼來發送電子郵件?
網站主持人對此評論進行了最小化
我使用您的 VBA 代碼根據單元格值發送電子郵件,但它不起作用。
步驟 5 之前的所有操作都有效,但沒有發送電子郵件。 誰能幫我這個?
網站主持人對此評論進行了最小化
Me viene muy bien gracias por el aporte, solo me falta como puedo hacerlo automaticamente sin necesidad de hacerlo manualmente el envio del correo。
網站主持人對此評論進行了最小化
當我運行它時,這段代碼凍結了我的 excel 程序。 它是內存密集型的嗎?
網站主持人對此評論進行了最小化
羅伯特,
你提到的問題在我的案例中沒有出現。 可以給我你的 Office 版本嗎?
網站主持人對此評論進行了最小化
我們可以只輸入一次詳細信息,然後電子郵件可以自動發送,而不是總是需要選擇列嗎?
網站主持人對此評論進行了最小化
嗨迪亞,
如果您不想手動選擇列,請應用以下 VBA 代碼。
注意:您只需要在應用代碼後選擇到期日期列。

公共子 CheckAndSendMail()
'更新者 Extendoffice 2017/9/14
將 xRgDate 調暗為範圍
暗淡 xRg 作為範圍發送
將 xRgText 調暗為範圍
將 xRgDone 調暗為範圍
將 xOutApp 調暗為對象
將 xMailItem 調暗為對象
將 xLastRow 變暗
將 vbCrLf 調暗為字符串
將 xMailBody 調暗為字符串
將 xRgDateVal 調暗為字符串
將 xRgSendVal 調暗為字符串
將 xMailSubject 調暗為字符串
暗淡我只要
在錯誤恢復下一頁
Set xRgDate = Application.InputBox("請選擇截止日期欄:", "KuTools For Excel", , , , , , 8)
如果 xRgDate 什麼都沒有,則退出 Sub
xLastRow = xRgDate.Rows.Count
設置 xRgDate = xRgDate(1)
設置 xRgSend = xRgSend(1)
設置 xRgText = xRgText(1)
設置 xOutApp = CreateObject("Outlook.Application")
對於 I = 1 到 xLastRow
xRgDateVal = xRgDate.Offset(I - 1).Value
如果 CDate(xRgDateVal) - 日期 <= 7 並且 CDate(xRgDateVal) - 日期 > 0 那麼
xRgSendVal = xRgSend.Offset(I - 1).Value
xMailSubject = xRgText.Offset(I - 1).Value & " on " & xRgDateVal
vbCrLf = "

"
xMailBody = "你好" & vbNewLine & vbNewLine & _
“這是第 1 行” & vbNewLine & _
“這是第 2 行”
設置 xMailItem = xOutApp.CreateItem(0)
使用 xMailItem
.To =“電子郵件地址”
.CC =“”
.BCC =“”
.Subject =“通過單元格值測試發送”
.Body = xMailBody
.Display '或使用 .Send
結束
設置 xMailItem = 無
如果結束
下一頁
設置 xOutApp = 無
END SUB
網站主持人對此評論進行了最小化
你好,
我也是一個初學者,我想為你偉大的 Sub 提出另一個問題。

只有當某個郵件地址在相關單元格中時,我才能發送電子郵件?

我需要這個,因為在我的 excel 工具中,我為每個需要提醒的人實現了一些按鈕。

提前非常感謝您!!

托馬斯
網站主持人對此評論進行了最小化
喜托馬斯,
我們發布了一篇文章“如何向 Excel 單元格中指定的電子郵件地址發送電子郵件?”
https://www.extendoffice.com/documents/excel/4717-excel-macro-send-email-to-address-in-cells.html
也許您可以在本文中找到您的解決方案。
網站主持人對此評論進行了最小化
我需要它來處理工作簿中的所有工作表,未來的日期將手動輸入到每張工作表的同一單元格中,並且每天都會創建新工作表。 我還需要電子郵件中的工作表名稱,以便我知道哪張工作表到期
網站主持人對此評論進行了最小化
抱歉不能幫你解決這個問題。
歡迎在我們的論壇上發布有關 Excel 的任何問題: https://www.extendoffice.com/forum.html. 您將從我們的專業人士或其他 Excel 粉絲那裡獲得更多 Excel 支持。
網站主持人對此評論進行了最小化
不要讓它工作。 使用 Office 365,因此 Outlook 和 Excel 應該足夠緊密。 就像 4 個月前來自“schou”的帖子一樣,它可以運行到第 5 步,但之後什麼也沒有。
解決這個問題?
網站主持人對此評論進行了最小化
我有 excel 來發送電子郵件,但是我可以設置它,以便每次打開 excel 時它都會發送一封電子郵件,而不是每次都選擇列。

我有一個 24 頁的工作簿,所以我希望在打開工作簿時自動發送電子郵件。


非常感謝。
網站主持人對此評論進行了最小化
嗨,
您的意思是在工作簿中自動檢查截止日期並在打開工作簿時發送電子郵件?
網站主持人對此評論進行了最小化
嗨,大家好,


宏很棒,但我想問一些問題 - 如果您的名單上有沒有任何日期的人,如何修改 vba 代碼以排除該人? 現在代碼甚至為沒有任何日期的人生成電子郵件。


謝謝!
網站主持人對此評論進行了最小化
嗨,Lvan,
代碼已更新解決問題,請嘗試。 感謝您的評論。
網站主持人對此評論進行了最小化
您好,Mail 會自動為包含空數據的列生成。 我也想更新代碼。
網站主持人對此評論進行了最小化
非常感謝您的貢獻。 我想知道如何使用固定列選擇而不必使用 kutools? 也就是說,保留日期、收據和警告的默認列?
網站主持人對此評論進行了最小化
美好的一天,
下面的 VBA 代碼可以幫助你。 請試一試。

公共子 CheckAndSendMail()
'更新者 Extendoffice 2018/11/22
將 xRgDate 調暗為範圍
暗淡 xRg 作為範圍發送
將 xRgText 調暗為範圍
將 xRgDone 調暗為範圍
將 xOutApp 調暗為對象
將 xMailItem 調暗為對象
將 xLastRow 變暗
將 vbCrLf 調暗為字符串
將 xMailBody 調暗為字符串
將 xRgDateVal 調暗為字符串
將 xRgSendVal 調暗為字符串
將 xMailSubject 調暗為字符串
昏暗的我只要
在錯誤恢復下一頁
Set xRgDate = Range("C2:C4") '請參考截止日期欄
如果 xRgDate 什麼都沒有,則退出 Sub
Set xRgSend = Range("A2:A4") '請參考收件人?email欄
如果 xRgSend 沒有,則退出 Sub
Set xRgText = Range("B2:B4") 輸入郵件中提醒內容的欄目
如果 xRgText 什麼都沒有,則退出 Sub
xLastRow = xRgDate.Rows.count
設置 xRgDate = xRgDate(1)
設置 xRgSend = xRgSend(1)
設置 xRgText = xRgText(1)
設置 xOutApp = CreateObject("Outlook.Application")
對於 i = 1 到 xLastRow
xRgDateVal = ""
xRgDateVal = xRgDate.Offset(i - 1).Value
如果 xRgDateVal <> "" 那麼
如果 CDate(xRgDateVal) - 日期 <= 7 並且 CDate(xRgDateVal) - 日期 > 0 那麼
xRgSendVal = xRgSend.Offset(i - 1).Value
xMailSubject = xRgText.Offset(i - 1).Value & " on " & xRgDateVal
vbCrLf = "

"
xMailBody = ""
xMailBody = xMailBody & “親愛的” & xRgSendVal & vbCrLf
xMailBody = xMailBody & "文本:" & xRgText.Offset(i - 1).Value & vbCrLf
xMailBody = xMailBody & ""
設置 xMailItem = xOutApp.CreateItem(0)
使用 xMailItem
.Subject = xMailSubject
.To = xRgSendVal
.HTMLBody = xMailBody
。顯示
'。發送
結束
設置 xMailItem = 無
如果結束
如果結束
下一頁
設置 xOutApp = 無
END SUB
網站主持人對此評論進行了最小化
親愛的水晶,

謝謝你的分享。

我是初學者,我的代碼有問題。

xMailBody = ""
xMailBody = xMailBody & “親愛的” & xRgSendVal & vbCrLf
xMailBody = xMailBody & "文本:" & xRgText.Offset(i - 1).Value & vbCrLf
xMailBody = xMailBody & ""

文本不換行。
能否請你幫忙。

謝謝
網站主持人對此評論進行了最小化
尼尼提,
您需要添加行 vbCrLf = " “在感冒面前。
如:
vbCrLf = " "
xMailBody = ""
xMailBody = xMailBody & “親愛的” & xRgSendVal & vbCrLf
xMailBody = xMailBody & "文本:" & xRgText.Offset(i - 1).Value & vbCrLf
xMailBody = xMailBody & ""
網站主持人對此評論進行了最小化
親愛的水晶,在選擇日期列時,可以選擇不同列中的多個單元格嗎?
網站主持人對此評論進行了最小化
你好,
Crystal 先生,在您與 Ivan 先生的最後一次談話中,他要求您提供每次打開電子表格時發送電子郵件的代碼,而不是每次都輸入代碼。
我需要相同的代碼,相同的情況,你能幫忙嗎?
網站主持人對此評論進行了最小化
正確的,不是伊万先生,而是奧斯汀先生。
謝謝。
網站主持人對此評論進行了最小化
嗨,我正在使用此代碼的修改版本,而且我對 VBA 很陌生。 我很好奇是否有可能何時發送電子郵件,宏將能夠標記 X,或者如果有人完成,電子郵件將不會發送。 我希望這一切都有意義。 非常感謝任何幫助。

一點背景,我正在使用這個工具在 30 天、60 天和逾期時運行到期日期檢查。 我希望 1 封電子郵件在 30 天發出,1 封在 60 天發出,然後也過期。 我正在使用我編寫的 VB 腳本運行它,這樣我就可以每天自動化它。 謝謝!
網站主持人對此評論進行了最小化
嗨,我正在使用此代碼的修改版本,而且我對 VBA 很陌生。 我很好奇是否有可能何時發送電子郵件,宏將能夠標記 X,或者如果有人完成,電子郵件將不會發送。 我希望這一切都有意義。 非常感謝任何幫助。 一點背景,我正在使用這個工具在 30 天、60 天和逾期時運行到期日期檢查。 我希望 1 封電子郵件在 30 天發出,1 封在 60 天發出,然後也過期。 我正在使用我編寫的 VB 腳本運行它,這樣我就可以每天自動化它。 謝謝!
網站主持人對此評論進行了最小化
您好先生,

這非常有幫助。 我需要在相同的代碼中再進行 2 次增強。 我每次都必須點擊發送按鈕,只要我有 10 封郵件要發送就可以了,如果我一天要發送超過 25 封郵件怎麼辦。 所以請給我一個代碼,以便在選擇截止日期、收件人、主題等後自動發送電子郵件。

也請向我提供添加“CC”選項的代碼


謝謝

發聲器 P
網站主持人對此評論進行了最小化
美好的一天,
請嘗試以下 VBA 代碼,希望我能提供幫助。 感謝您的評論。

公共子 CheckAndSendMail()
'更新者 Extendoffice 2018/11/22
將 xRgDate 調暗為範圍
暗淡 xRg 作為範圍發送
將 xRgText 調暗為範圍
將 xRgDone 調暗為範圍
將 xOutApp 調暗為對象
將 xMailItem 調暗為對象
將 xLastRow 變暗
將 vbCrLf 調暗為字符串
將 xMailBody 調暗為字符串
將 xRgDateVal 調暗為字符串
將 xRgSendVal 調暗為字符串
將 xMailSubject 調暗為字符串
昏暗的我只要
在錯誤恢復下一頁
Set xRgDate = Application.InputBox("請選擇截止日期欄:", "KuTools For Excel", , , , , , 8)
如果 xRgDate 什麼都沒有,則退出 Sub
Set xRgSend = Application.InputBox("請選擇收件人?郵箱欄:", "KuTools For Excel", , , , , , 8)
如果 xRgSend 沒有,則退出 Sub
Set xRgCC = Application.InputBox("請選擇抄送收件人?郵件欄:", "KuTools For Excel", , , , , , 8)
如果 xRgCC 什麼都不是,則退出 Sub
Set xRgText = Application.InputBox("選擇郵件中提醒內容的列:", "KuTools For Excel", , , , , , 8)
如果 xRgText 什麼都沒有,則退出 Sub
xLastRow = xRgDate.Rows.Count
設置 xRgDate = xRgDate(1)
設置 xRgSend = xRgSend(1)
設置 xRgCC = xRgCC(1)
設置 xRgText = xRgText(1)
設置 xOutApp = CreateObject("Outlook.Application")
對於 i = 1 到 xLastRow
xRgDateVal = ""
xRgDateVal = xRgDate.Offset(i - 1).Value
如果 xRgDateVal <> "" 那麼
如果 CDate(xRgDateVal) - 日期 <= 7 並且 CDate(xRgDateVal) - 日期 > 0 那麼
xRgSendVal = xRgSend.Offset(i - 1).Value
xRgCCVal = xRgCC.Offset(i - 1).Value
xMailSubject = xRgText.Offset(i - 1).Value & " on " & xRgDateVal
vbCrLf = "

"
xMailBody = ""
xMailBody = xMailBody & “親愛的” & xRgSendVal & vbCrLf
xMailBody = xMailBody & "文本:" & xRgText.Offset(i - 1).Value & vbCrLf
xMailBody = xMailBody & ""
設置 xMailItem = xOutApp.CreateItem(0)
使用 xMailItem
.Subject = xMailSubject
.To = xRgSendVal
.Cc = xRgCCVal
.HTMLBody = xMailBody
。發送
結束
設置 xMailItem = 無
如果結束
如果結束
下一頁
設置 xOutApp = 無
END SUB
網站主持人對此評論進行了最小化
嗨水晶,

感謝您的代碼,因為它非常有幫助。 但是,如果我使用的是 outlook.office.com,如何使代碼正常工作?
網站主持人對此評論進行了最小化
在正文中,我想要表格格式的列 a、b、c 值,例如在正文列中達到的過期日期我想以表格格式打印 a、b、c 單元格詳細信息
網站主持人對此評論進行了最小化
嗨 Dinesh BS,
抱歉不能幫你。 歡迎在我們的論壇發表任何問題: https://www.extendoffice.com/forum.html.
網站主持人對此評論進行了最小化
您好,我是 VBA 新手。 有沒有辦法讓這個程序在文件打開時自動運行?
網站主持人對此評論進行了最小化
嗨 L Echols,
要在打開文件時自動運行代碼,請雙擊打開 ThisWorkbook 代碼窗口(位於 Microsoft Visual Basic for Applications 窗口的左側),從第一個下拉列表中選擇 Workbook,然後復制將上面的 VBA 代碼(第一行和最後一行除外)放入代碼窗口並粘貼在給定的兩行之間。 請參閱以下隨附的屏幕截圖:
查看附件 (1 / 5)
網站主持人對此評論進行了最小化
這太棒了。 我想知道是否有一種方法可以運行代碼而不必每次都選擇 KuTools 值? 為了澄清起見,我輸入了這段代碼,現在每當我打開工作簿時,我仍然必須突出顯示相同的列。 有沒有辦法輸入代碼以每次都對相同的列進行檢查 - 只要沒有對工作簿進行編輯 - 運行檢查並根據所述檢查制定電子郵件? 先感謝您。
網站主持人對此評論進行了最小化
嗨,丹尼,
請嘗試以下代碼並根據需要更改範圍。

公共子 CheckAndSendMail()
'更新者 Extendoffice 2019/5/17
將 xRgDate 調暗為範圍
暗淡 xRg 作為範圍發送
將 xRgText 調暗為範圍
將 xRgDone 調暗為範圍
將 xOutApp 調暗為對象
將 xMailItem 調暗為對象
將 xLastRow 變暗
將 vbCrLf 調暗為字符串
將 xMailBody 調暗為字符串
將 xRgDateVal 調暗為字符串
將 xRgSendVal 調暗為字符串
將 xMailSubject 調暗為字符串
昏暗的我只要
在錯誤恢復下一頁
設置 xRgDate = Range("C2: C4")
如果 xRgDate 什麼都沒有,則退出 Sub
設置 xRgSend = Range("A2: A4")
如果 xRgSend 沒有,則退出 Sub
設置 xRgText = Range("B2:B4")
如果 xRgText 什麼都沒有,則退出 Sub
xLastRow = xRgDate.Rows.Count
設置 xRgDate = xRgDate(1)
設置 xRgSend = xRgSend(1)
設置 xRgText = xRgText(1)
設置 xOutApp = CreateObject("Outlook.Application")
對於 i = 1 到 xLastRow
xRgDateVal = ""
xRgDateVal = xRgDate.Offset(i - 1).Value
如果 xRgDateVal <> "" 那麼
如果 CDate(xRgDateVal) - 日期 <= 7 並且 CDate(xRgDateVal) - 日期 > 0 那麼
xRgSendVal = xRgSend.Offset(i - 1).Value
xMailSubject = xRgText.Offset(i - 1).Value & " on " & xRgDateVal
vbCrLf = "

"
xMailBody = ""
xMailBody = xMailBody & “親愛的” & xRgSendVal & vbCrLf
xMailBody = xMailBody & "文本:" & xRgText.Offset(i - 1).Value & vbCrLf
xMailBody = xMailBody & ""
設置 xMailItem = xOutApp.CreateItem(0)
使用 xMailItem
.Subject = xMailSubject
.To = xRgSendVal
.HTMLBody = xMailBody
。顯示
'。發送
結束
設置 xMailItem = 無
如果結束
如果結束
下一頁
設置 xOutApp = 無
END SUB
網站主持人對此評論進行了最小化
這太棒了。 我想知道是否有一種方法可以運行代碼而不必每次都選擇 KuTools 值? 為了澄清起見,我輸入了這段代碼,現在每當我打開工作簿時,我仍然必須突出顯示相同的列。 有沒有辦法輸入代碼以每次都對相同的列進行檢查 - 只要沒有對工作簿進行編輯 - 運行檢查並根據所述檢查制定電子郵件? 先感謝您。
網站主持人對此評論進行了最小化
你好水晶,
打開文件後,我遇到了自動發送電子郵件的問題。 例如,我在 Sheet1 上有所有到期日期信息。 但是,如果我在處理 Sheet2 時保存並關閉文件,一旦打開文件,發送電子郵件的值將基於 Sheet2 而不是 Sheet1。 我只在 Sheet1 和 ThisWorkbook 上添加了模塊。 我認為在 ThisWorkbook 上擁有相同的 vba 會觸發在我目前打開的任何工作表上發送自動電子郵件。 如何限制 VBA 從特定工作表中提取值並在打開文件時發送電子郵件? 非常感謝您提前提供的幫助!
網站主持人對此評論進行了最小化
我是 VBA 新手。 有沒有辦法在打開文件時自動運行該程序?
網站主持人對此評論進行了最小化
是的,有


私人子工作簿_打開()
*在這裡輸入代碼*
END SUB
網站主持人對此評論進行了最小化
嗨,

我有一個問題

如果我想選擇一個預先確定的單元格範圍,我該如何修改這部分的代碼:

xLastRow = xRgDate.Rows.Count
設置 xRgDate = xRgDate(1)

自動設置單元格?

謝謝 :)
網站主持人對此評論進行了最小化
嗨,
如果您不想每次應用代碼時都手動選擇範圍,請使用以下代碼。

公共子 CheckAndSendMail()
'更新者 Extendoffice 2019/12/10
將 xRgDate 調暗為範圍
暗淡 xRg 作為範圍發送
將 xRgText 調暗為範圍
將 xRgDone 調暗為範圍
將 xOutApp 調暗為對象
將 xMailItem 調暗為對象
將 xLastRow 變暗
將 vbCrLf 調暗為字符串
將 xMailBody 調暗為字符串
將 xRgDateVal 調暗為字符串
將 xRgSendVal 調暗為字符串
將 xMailSubject 調暗為字符串
昏暗的我只要
在錯誤恢復下一頁
設置 xRgDate = Range("C2: C4")
如果 xRgDate 什麼都沒有,則退出 Sub
設置 xRgSend = Range("A2: A4")
如果 xRgSend 沒有,則退出 Sub
設置 xRgText = Range("B2:B4")
如果 xRgText 什麼都沒有,則退出 Sub
xLastRow = xRgDate.Rows.Count
設置 xRgDate = xRgDate(1)
設置 xRgSend = xRgSend(1)
設置 xRgText = xRgText(1)
設置 xOutApp = CreateObject("Outlook.Application")
對於 i = 1 到 xLastRow
xRgDateVal = ""
xRgDateVal = xRgDate.Offset(i - 1).Value
如果 xRgDateVal <> "" 那麼
如果 CDate(xRgDateVal) - 日期 <= 7 並且 CDate(xRgDateVal) - 日期 > 0 那麼
xRgSendVal = xRgSend.Offset(i - 1).Value
xMailSubject = xRgText.Offset(i - 1).Value & " on " & xRgDateVal
vbCrLf = "

"
xMailBody = ""
xMailBody = xMailBody & “親愛的” & xRgSendVal & vbCrLf
xMailBody = xMailBody & "文本:" & xRgText.Offset(i - 1).Value & vbCrLf
xMailBody = xMailBody & ""
設置 xMailItem = xOutApp.CreateItem(0)
使用 xMailItem
.Subject = xMailSubject
.To = xRgSendVal
.HTMLBody = xMailBody
。顯示
'。發送
結束
設置 xMailItem = 無
如果結束
如果結束
下一頁
設置 xOutApp = 無
END SUB
網站主持人對此評論進行了最小化
布宜諾斯艾利斯! ¿que modificacióntendría que realizar para dejar seleccionadas las celdas con la informationación de fecha, texto y correo y no tener que seleccionarlas cada vez que se activa la macro?

también me gustaría saber como introducir un CC, es decir, poder poner a otra persona en copia del correo。 格拉西亞斯!
網站主持人對此評論進行了最小化
你好! Pudiste solucionar esto? Estoy necesitando lo mismo.. gracias!
這裡還沒有評論
載入更多
留下你的意見
以訪客身份發帖
×
評價此帖子:
0   字符
推薦地點

關注我們

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