Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1756to1760
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Automatisierungsfehler

Automatisierungsfehler
09.05.2020 12:10:16
Arne
Guten Tag,
ich möchte automatisch E-Mails versenden. Die E-Mail-Adresse wird dabei per Schleife aus einer Liste übernommen. Das klappt allerdings nur für das erste Element in der Liste, danach erhalte ich dann folgenden Fehler:
"Laufzeitfehler '-2147221238 (8004010a)': Automatisierungsfehler."
Ich hoffe jemand kann mir hier weiterhelfen. In der Forumssuche konnte ich das Thema noch nicht finden.
Hier noch der Code:
Sub Email_senden(EmailListe() As String)
Dim objOutlook As Object
Dim objMail As Object
Set objOutlook = CreateObject("Outlook.Application")
Set objMail = objOutlook.CreateItem(0)
For i = 0 To UBound(EmailListe())
With objMail
.To = EmailListe(i)   ' Hier taucht die Fehlermeldung beim zweiten Durchgang auf
.Subject = "Betreff"
.Body = "Ihre Nachricht."
.Send       'Display
End With
Next
End Sub
und Hier die Methode, über die das ganze Aufgerufen wird:
Sub Email()
Dim EmailListe() As String 'MitarbeiterMails in eine Liste schreiben
Dim i As Integer 'Zählvariable
Dim AnzahlMA As Integer 'Anzahl der Mitarbeiter, wird aus einer Zelle ausgelesen
AnzahlMA = Worksheets("Mitarbeiter").Range("E2")
ReDim EmailListe(AnzahlMA) 'Größe der Liste festlegen
For i = 0 To ((AnzahlMA + (i - 1)))
EmailListe(i) = Worksheets("Mitarbeiter").Cells((i + 3), 3).Value
Next
Email_senden EmailListe()
End Sub
Liebe Grüße
Arne

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Automatisierungsfehler
09.05.2020 12:28:24
onur
Der ganze Block mit
With objMail
End With

muss NACH der Schleife kommen und in der Schleife musst du aus dem ganzen Array eine Variable (z.B.EmpfList) machen, in der alle Elemente des Arrays durch ";" enthalten sind. (Oder sogar besser schon in der aufrufenden Sub).
z.B.:
For i = 0 To UBound(EmailListe())
EmpfList=EmpfList+EmailListe(i)
If i UBound(EmailListe()) then EmpfList=EmpfList+ ";"
Next
Dann brauchst du nur noch in dem Block
.To = EmpfList
...

zu schreiben.
Anzeige
AW: Automatisierungsfehler
09.05.2020 14:11:09
Arne
Super, vielen Dank onur!
Und das ganze in einen String zu schreiben ist natürlich auch cool. Das werde ich dann lieber übernehmen.
Gerne !
09.05.2020 15:39:48
onur
Gerne !
09.05.2020 15:47:10
onur
Wenn du die Adressen direkt in der ersten Sub in der Schleife in EmpfList packst (statt in das Array), brauchst du das Array gar nicht mehr und du kannst EmpfList der zweiten Sub übergeben und brauchst auch die zweite Schleife nicht mehr.
AW: Automatisierungsfehler
09.05.2020 16:00:28
onur
Übrigens:

For i = 0 To ((AnzahlMA + (i - 1)))
ist Murks, da der Endwert nur am Anfang der Schleife eingelesen wird - es bringt gar nix, wenn man ihn im nachhinein ändert.
Es ist also das Selbe wie:

For i = 0 To AnzahlMA -1

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige