Microsoft Excel

Herbers Excel/VBA-Archiv

E-Mail mit Signatur Laufzeitfehler 287

Betrifft: E-Mail mit Signatur Laufzeitfehler 287 von: René
Geschrieben am: 09.09.2020 19:18:30

Hallo zusammen,


bei folgendem Skript laufe ich auf einen Laufzeitfehler 287 und ich verstehe nicht wieso. Google war leider nicht hilfreich :/ Ich arbeite mit HTMLBody, da ich eine Signatur eingefügt haben möchte. Habe auch "htmlBody = "Test
" & .htmlBody" versucht, also ohne den Umweg über die Variable. Beide Male die selbe Fehlermeldung.


Das Skript habe ich zur Übersicht gekürzt, die Variablen sind alle als String deklariert.


Habt ihr eine Idee? Vielen Dank im Voraus!


Gruß René

Sub emailerstellen()
Dim objOutlook As Object
Dim objMail As Object
[...]

[...]
    file = Dir(pfad & "*.xlsx")
    Do While file <> ""
            Set objOutlook = CreateObject("Outlook.Application")
            Set objMail = objOutlook.CreateItem(0)
            With objMail
                .Display
                .GetInspector
                olOldBody = .htmlBody
                .To = an
                .cc = cc
                .Subject = "Online Survey (Corona)"
                .htmlBody = "Test" & olOldBody
                .Attachments.Add pfad & file
            End With
            file = Dir
        End If
    Loop
End Sub

Betrifft: AW: E-Mail mit Signatur Laufzeitfehler 287
von: volti
Geschrieben am: 09.09.2020 20:04:10

Hallo Rene,

die CreateObject-Function würde ich nicht mit in die Schleife nehmen und das Mail-Object auf Nothing setzen, bevor es zur nächsten Mail geht.

Hier ein ungetesteter Vorschlag:

 
[Cc]
Sub emailerstellen() Dim objOutlook As Object Dim objMail As Object Set objOutlook = CreateObject("Outlook.Application") file = Dir(pfad & "*.xlsx") Do While file <> "" Set objMail = objOutlook.CreateItem(0) With objMail .GetInspector olOldBody = .htmlBody .To = an .cc = cc .Subject = "Online Survey (Corona)" .htmlBody = "Test" & olOldBody .Display .Attachments.Add pfad & file End With Set objMail = Nothing file = Dir ' End If Dieses End If ist zu viel Loop End Sub
 
____________________
viele Grüße aus Freigericht
Karl-Heinz


Betrifft: AW: E-Mail mit Signatur Laufzeitfehler 287
von: volti
Geschrieben am: 09.09.2020 20:11:04

Hallo,

wobei ich mich gerade frage, ob Du wirklich jede Datei einzeln versenden willst oder eher in einer Mail?

 
[Cc]
Sub emailerstellen() Dim objOutlook As Object Dim objMail As Object Set objOutlook = CreateObject("Outlook.Application") Set objMail = objOutlook.CreateItem(0) With objMail .GetInspector olOldBody = .htmlBody .To = an .cc = cc .Subject = "Online Survey (Corona)" .htmlBody = "Test" & olOldBody .Display file = Dir(pfad & "*.xlsx") Do While file <> "" .Attachments.Add pfad & file file = Dir Loop End With Set objMail = Nothing End Sub
 
____________________
viele Grüße aus Freigericht
Karl-Heinz


Betrifft: AW: E-Mail mit Signatur Laufzeitfehler 287
von: René
Geschrieben am: 14.09.2020 13:43:50

Hallo Karl-Heinz,

danke dir für die Antwort, habe deine Anmerkungen eingearbeitet, allerdings erhalte ich weiterhin den Laufzeitfehler 287. Er kommt direkt beim ersten Durchlauf bei der Zeile olOldBody = .htmlBody
Definiert als: Dim olOldBody as String
Auf den zweiten Post bezogen: Eine Datei pro E-Mail, das Skript läuft einwandfrei, wenn ich auf htmlbody verzichte, allerdings dann leider ohne Signatur..

Gruß René

Betrifft: AW: E-Mail mit Signatur Laufzeitfehler 287
von: volti
Geschrieben am: 14.09.2020 18:48:56

Hallo Rene,

die Dimensionierung olOldBody als String ist ok, auch der gesamte Code ist bei mir lauffähig. Ich erhalte keinen Laufzeitfehler 287 und habe bei meinen Codes auch noch nie einen bekommen. Kann daher mangels Erfahrung wenig helfen.
Im Netz gibt es hierzu nur Anmerkungen zum .Send-Befehl, teilweise mit dem Hinweis auf Laufzeitprobleme.

Aber das ist bei Dir ja nicht der Fall.

Auch die Vorgabe des Bodyformats (s.u. code Zeile 12) und die Verschiebung des .Display-Befehls (Zeile13) dürften m.E. keinen Einfluss hierauf haben. Aber probiere es trotzdem mal aus.

[Cc]
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
Sub emailerstellen()
 Dim objOutlook As Object
 Dim objMail As Object
 Dim olOldBody As String
 Dim Pfad As String
 
 Set objOutlook = CreateObject("Outlook.Application")
 file = Dir(sPfad & "*.xlsx")
 Do While file <> ""
    Set objMail = objOutlook.CreateItem(0)
    With objMail
         .bodyformat = 2
         .GetInspector.Display
         olOldBody = .htmlBody
         .To = an
         .cc = cc
         .Subject = "Online Survey (Corona)"
         .htmlBody = "Test" & olOldBody
         .Attachments.Add Pfad & file
    End With
    Set objMail = Nothing
    file = Dir
 Loop
End Sub
 
____________________
viele Grüße aus Freigericht
Karl-Heinz


Beiträge aus dem Excel-Forum zum Thema "E-Mail mit Signatur Laufzeitfehler 287"