1

こんにちは、Access データベースに保存されている電子メール アドレスのリストから別のメールを送信するために、VB で小さなアプリケーションを開発しています。VB と Access を接続するために ADODC コントローラーを使用しています。しかし、ADODC コントローラーをループしているときに、「項目が移動または削除されました」というエラーが表示されます。皆さん、これについて私を助けてもらえますか? 以下は私が使用しているコードです。アドレスごとにメールを分けて送りたいので、.Recipients.Addコマンドが使えません。

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

2 に答える 2

4

.Send はメールを送信します。最初の反復では電子メールが送信され、oOMail は失われます。最初のループの後、あなたが言及したエラーが発生し始めます。

編集 - - - - - - - - - - -

以前にコードを書き直さなかったことをお詫びします。すべての添付ファイルを 1 通のメールに追加して送信する必要があると仮定すると、

編集 - - - - - - - - - - - - - - - - - - -

毎回メールオブジェクトを作成したい場合

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

サブ終了

于 2012-08-13T17:19:51.273 に答える
1

あなたのコードは正しかったです。必要なのは with を反対側ではなくループ内に置くことだけです

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
于 2014-02-20T06:44:53.930 に答える