簡體   English   中英

VBA:循環打開多封電子郵件

[英]VBA: Opening Multiple Emails in Loop

現在,如果在 Column1 中找到用戶表單 (TextBox1INC) 中給出的 ID,我有打開電子郵件的代碼,但假設我有兩封電子郵件或任何數字,我想打開所有這些,而不僅僅是一。 如何將循環放入此代碼中以使其工作?

Private Sub CommandButton8showemail_Click()

Dim wsArch As Worksheet
Dim lastrow, a As Long
Dim strEmail, strEmailLoc As String
Dim OutMejlik As Outlook.Application
Dim msg As Outlook.MailItem

Set wsArch = ThisWorkbook.Sheets("Emails_arch")
lastrow = Sheets("Emails_arch").Range("A" & Rows.Count).End(xlUp).Row

With wsArch
    For a = lastrow To 2 Step -1
        If .Cells(a, 1).Value = TextBox1INC.Text Then
        strEmailLoc = .Cells(a, 2).Value
        Set OutMejlik = CreateObject("Outlook.Application")
        Set msg = OutMejlik.Session.OpenSharedItem(strEmailLoc)
        msg.Display
        Exit Sub
        End If
    Next a
End With

End Sub

目前在循環中,一旦第一個項目顯示給用戶,您就會退出:

    For a = lastrow To 2 Step -1
        If .Cells(a, 1).Value = TextBox1INC.Text Then
        strEmailLoc = .Cells(a, 2).Value
        Set OutMejlik = CreateObject("Outlook.Application")
        Set msg = OutMejlik.Session.OpenSharedItem(strEmailLoc)
        msg.Display
        Exit Sub
        End If
    Next a
End With

如果刪除Exit Sub部分,代碼將繼續運行並根據需要打開項目。 但我也建議在循環外創建一個新的 Outlook 應用程序以避免每次都創建(即使 Outlook 是一個 singleton 並且只能創建一個實例)。

Set OutMejlik = CreateObject("Outlook.Application")

With wsArch
    For a = lastrow To 2 Step -1
        If .Cells(a, 1).Value = TextBox1INC.Text Then
          strEmailLoc = .Cells(a, 2).Value
         
          Dim msg As Outlook.MailItem
          Set msg = OutMejlik.Session.OpenSharedItem(strEmailLoc)
          msg.Display
        End If
    Next a
End With

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM