VBA run-time-error '438'

Moin Ihr Spezialisten ! :smile:

Ich habe ein grosses Problem mit meinem Outlook 2003, wenn ich Einladungen über den Kalender verschicke, oder ein annehme.
dann gibts immer einen run-time-error ‚438‘
Ich habe mal auf Debug geklickt und folgendes bekommen:
___________________________________________________________________
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)

Dim strMsg(2) As String

If Item.BodyFormat = olFormatHTML Then
If InStr(Item.HTMLBody, " 0 Then
strMsg(0) = Left(Item.HTMLBody, InStr(Item.HTMLBody, „“) + 4)
strMsg(1) = Left(strMsg(1), InStr(strMsg(1), „>“) - 1)

strMsg(1) = Replace(strMsg(1), " ", „“)
strMsg(1) = Replace(strMsg(1), „:0049“, „:+49“)
strMsg(1) = Replace(strMsg(1), „:00“, „:0“)
Item.HTMLBody = strMsg(0) & „“ & strMsg(1) & „“ & strMsg(2)
End If
End If

End Sub
________________________________________________________________
Zusätzlich möchte ich noch hinzufügen das die fehlermeldung beim annehmen nur kommt wenn ich KEINE antwort darauf verschicke.
Ich bin mit meinem latein am ende und hoffe das hier jemand ist der dieses problem schonmal hatte und fixen konnte. Ich könnte zwar alles neu installieren, aber das ist ja doch etwas aufwendiger.

schonmal danke im vorraus !

Christoph

Moin Ihr Spezialisten ! :smile:

Ich habe ein grosses Problem mit meinem Outlook 2003, wenn ich
Einladungen über den Kalender verschicke, oder ein annehme.
dann gibts immer einen run-time-error ‚438‘

438 bedeutet „Object doesn’t support this property or method“

Und dass Du überhaupt VBA Code bekommst wenn Du „Debug“ klickst kann m.E. nur bedeuten, dass irgendwer Dein Outlook um eigene VBA Makros „erweitert“ hat. Aus dem Code würde ich meinen, folgende Schlüsse ziehen zu können:

Die Routine ist darauf spezialisiert, jedes gesendete Obkekt durchzukaspern, und wenn darin

Die beim Debug Aufruf markierte zeile zu kennen würde uns noch
ein wenig näher an das Problem führen. Aber beheben können wir
es wohl nicht. Finde den Programmierer, der die Erweiterung
verbrochen hat, und er kanns beheben. Ich wars nicht :smile:

…Armin

erstmal tausend dank. :smile:

es geht um diese zeile hier…

If Item.BodyFormat = olFormatHTML Then

Genau wie ich dachte. Für einen Crashkurs in objektorientierter Programmierung reichts nicht, aber mal so ungefähr:

die Routine wird wahrscheinlich jedesmal getriggert wenn man *irgend etwas* sendet. Das irgend etwas, nennen wir es Dingsda, kann ein Mail sein, ein Kontakt, ein Termin, was outlook eben so senden kann.

Die Variable „Item“ enthält dann das Dingsda. Normale Mails haben, vermute ich, entweder Text- oder HTML Format, denn das ist genau das was man bei Outlook einstellen kann. Der Programmierer checkt deshalb, ob das gesendete Dingsda HTML ist (olFormatHTML). Jetzt marschiert da aber blöder Weise ein „Item“ daher, das nicht einmal die Abfrage nach seinem eigenen Format (Item.BodyFormat) kennt. Patsch, fliegt das Makro auf die Nase.

Du kannst jetzt natürlich etwas absolut Dreistes tun. Sag aber niemandem ich hätte Dir das so angeraten, der „Fix“ löst zwar Dein akutes Problem, legt aber schon die Grundlage für Folgeprobleme ohne
Ende.

Schreib vor die abstürzende Zeile eine neue Codezeile:

on error resume next

… und schau, was dann passiert. Die Anweisung unterdrückt die Fehlermeldung. Nur löst sie das Problem natürlich nicht. Item ist immer noch ein Dingsda, mit dem irgendwelche Makros, die Du im Outlook laufen hast, nicht umgehen können. Die Makros werden auch künftig immer mal wieder über das Dingsda stolpern.

Irgendwie ist das wie Sondermüll verbuddeln. Problem für den Moment gelöst, aber die Nachfolgegeneration muss den ganzen Mist u.U. wieder ausbuddeln.

Es wäre besser, wenn Du den Verursacher (Programmierer des Makros) findest und ihn aufforderst, den Programmfehler, den Du ihm da auf dem Silbertablett servierst, sauber zu beheben. Entweder muss er Item noch einen Test angedeihen lassen, ob das Item ein Mail ist oder sonstwas, oder das Makro so in Aoutlook einklinken dass es nur getriggert wird wenn man ein Mail versendet, und nicht einen Termin oder Kontakt.

…Armin

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

hey armin !
nochmals danke für die antwort!

ich habs probiert, leider habe ich keine rechte dieses zu ändern und ich möchte auch lieber das es eher funktioniert als unterdrückt wird. habe aber den zuständigen programmierer herausgefunden und ihn darauf hingewiesen.

Gruss,
Christoph

hey armin !
nochmals danke für die antwort!

ich habs probiert, leider habe ich keine rechte dieses zu
ändern und ich möchte auch lieber das es eher funktioniert als
unterdrückt wird. habe aber den zuständigen programmierer
herausgefunden und ihn darauf hingewiesen.

So ists sowieso besser. Da er das Makro wahrscheinlich noch an mehr Leute herausgegeben hat löst er damit das Problem selbst bei Leuten, die noch nicht einmal wissen, dass sie es haben, bevor sie es wirklich haben :smile:

Ein Beitrag zu einer besseren EDV Welt :smile:

…Armin