2012-08-13 174 views
1

嗨我正在開發VB中的一個小應用程序,以便從存儲在Access數據庫中的電子郵件地址列表中發送單獨的郵件。我使用ADODC控制器來連接VB和Access。但是,通過ADODC控制器循環時,我收到錯誤「項目已被移動或刪除」。你們能幫我解決嗎?以下是我正在使用的代碼。我想爲每個地址發送單獨的郵件,因此無法使用.Recipients.Add命令。從VB6使用Outlook發送郵件多個郵件

Private Sub Send_Click() 
    Dim oOApp As Outlook.Application 
    Dim oOMail As Outlook.MailItem 

    Set oOApp = CreateObject("Outlook.Application") 
    Set oOMail = oOApp.CreateItem(olMailItem) 

    With oOMail 

    Adodc1.Recordset.MoveFirst 

    While Adodc1.Recordset.EOF = False 
    .To = Text1.Text <------ getting error in this line in second iteration 
    .Subject = Subject.Text 
    .Body = MsgBody.Text 
    If path1.Text <> "" Then 
     .Attachments.Add path1.Text, olByValue, 1 
    End If 
    .Send 
    Adodc1.Recordset.MoveNext 
    Wend 
End Sub 

回答

4

。發送將發送電子郵件。在第一次迭代中,電子郵件將被髮送,並且oOMail將會丟失。第一次循環後,你會開始得到你提到的錯誤。

編輯----------------------

對不起,不重寫代碼前面。假設您必須將所有附件添加到單個電子郵件中併發送它

編輯---------------------------- ----------

如果你想創建電子郵件對象每次

Private Sub Send_Click() 
Dim oOApp As Outlook.Application 
Dim oOMail As Outlook.MailItem 

Set oOApp = CreateObject("Outlook.Application") 




Adodc1.Recordset.MoveFirst 

While Adodc1.Recordset.EOF = False 
Set oOMail = oOApp.CreateItem(olMailItem) 
With oOMail 
.To = Text1.Text <------ getting error in this line in second iteration 
.Subject = Subject.Text 
.Body = MsgBody.Text 
If path1.Text <> "" Then 
.Attachments.Add path1.Text, olByValue, 1 
End If 

Adodc1.Recordset.MoveNext 
Wend 

.Send 'Sending the email in the end 

末次

+0

是的,你是對的。那麼我能做些什麼來保持oOMailconnection生活? – Rupesh 2012-08-13 17:27:41

+1

如果您尚未準備好,請創建另一個olMailItem或不發送第一個項目。 – jac 2012-08-13 17:37:05

+0

對不起,我是VB的初學者。任何人都可以通過編寫代碼來解釋解決方案嗎? – Rupesh 2012-08-13 17:42:04

1

你的代碼是正確的,你需要的一切都是爲了把與循環內部不相反

Private Sub Send_Click() 
    Dim oOApp As Outlook.Application 
    Dim oOMail As Outlook.MailItem 
    Set oOApp = CreateObject("Outlook.Application") 
    Set oOMail = oOApp.CreateItem(olMailItem) 
    Adodc1.Recordset.MoveFirst 
    While Adodc1.Recordset.EOF = False 
     With oOMail 
      .To = Text1.Text 
      .Subject = Subject.Text 
      .Body = MsgBody.Text 
      If path1.Text <> "" Then 
       .Attachments.Add path1.Text, olByValue, 1 
      End If 
      .save 
      .send 
     End with. 
     Adodc1.Recordset.MoveNext 
    Wend 
End sub