07.09.2021, 13:48 (Dieser Beitrag wurde zuletzt bearbeitet: 07.09.2021, 15:46 von Glausius.
Bearbeitungsgrund: Codetags
)
Hallo zusammen,
habe eine seltsames Problem und hoffe Ihr könnt mir helfen! :)
Folgenden Code nutze ich schon seit Jahren ohne Probleme, erst seit ca. halben Jahr kommt es immer wieder zu einem Laufzeitfehler 5 - Ungüliter Prozeduraufruf oder ungültiges Argument.
Code:
Private Sub PDFperMail() Wahl = MsgBox("Auftrag senden?", vbYesNo) If Wahl <> 6 Then Exit Sub ActiveSheet.PrintOut copies:=3 ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ "C:\AUFTRAGE\" & Range("A1").Text & " " & "KL" & Range("I6") & " " & Range("A27"), Quality:=xlQualityStandard, IncludeDocProperties _ :=True, IgnorePrintAreas:=False, OpenAfterPublish:=False Dim olApp As Object Set olApp = CreateObject("Outlook.Application") With olApp.CreateItem(0) .GetInspector .Recipients.Add Range("A12").Value .Subject = Range("A1").Text & " " & "KL" & Range("I6") & " " & Range("A27") '.Body = "Avisierung" & Chr(13) & _ "Mit freundlichen Grüßen" & Chr(13) & Chr(13) .ReadReceiptRequested = True .Attachments.Add "C:\AUFTRAGE\" & Range("A1").Text & " " & "KL" & Range("I6") & " " & Range("A27") & ".PDF" If Range("J1") = "x" Then .display If Range("J1") <> "x" Then .Send '.Send MsgBox ("Auftragwurde erfolgreich gesendet!") End With Set olApp = Nothing Sheets("Übersicht").Select End Sub
Hat jemand eine Idee warum das jetzt auf einmal nicht mehr funktioniert!
ich nehme an, das geschieht wegen der falschen Verwendung der GetInspector-Eigenschaft des MailItem-Objektes, die du wie eine Methode des MailItem-Objektes aufrufst. Tatsächlich musst du dafür einen Objektzeiger einsetzen, zB. wie folgt:
Dim olInsp As Object '.... Set olInsp = olApp.CreateItem(0).GetInspector
Code:
Private Sub PDFperMail() Dim Wahl As VbMsgBoxResult
Wahl = MsgBox("Auftrag senden?", vbYesNo) If Wahl <> vbYes Then Exit Sub
With CreateObject("Outlook.Application").CreateItem(0) .To = Range("A12").Value .Subject = mid(c00,13) .Body = "Advisierung" & Chr(13) & "Mit freundlichen Grüßen" .Attachments.Add c00 .Send End With End Sub
vielen Dank für den modifizierten Code! :) Deutlich kürzer als meiner! Habe hier noch hinter ".Attachments.Add c00" ein & ".pdf" hinzugefügt :) dann läuft der Code weiter aber bei ".send" bleibt er auch wieder hängen mit dem gleichen Laufzeitfehler 5 und hier wird auch keine Signatur eingefügt!?
10.09.2021, 12:57 (Dieser Beitrag wurde zuletzt bearbeitet: 10.09.2021, 12:57 von Janush.)
Hallo Alexandra,
du schreibst, dass es IMMER WIEDER zu diesen Poblemen kommt. Was heist das genau? Immer mal wieder unverhofft, oder eigentlich immer? Als nächstes wäre auch hilfreich unter welchen Voraussetzungen der Fehler auftritt, oder zumindest ein Screenshot vom Debugger.
Damit eine Autosignatur angezeigt wird, braucht es den Inspektor. Wird dieser weggelassen gibt's keine Signatur, deswegen ist der modifizierte Code zu einfach gefasst.
Kannst du deine Datei hochladen, oder ein Beispiel davon? Vom reinen Anschauen her, sieht der Code erstmal gut aus....hat ja auch seit Jahren funktioniert
anbei der gewünschte Screenshot vom Debugger meines ursprünglichen Codes, musste etwas unkenntlich machen, da der Firmenname immer mit angegeben ist. :)
Der Code bleibt immer hängen, wenn in J1 kein "x" drin steht, dann sollte nämlich das Mail beim Auslösen des Codes versendet werden, ohne daß sich das Mail öffnet, also für den User nicht wirklich sichtbar. Also Button drücken, Mail wird versendet, MsgBox erscheint mit Erfolgsmeldung und alles gut. Und das hat früher ohne Probleme funktioniert. Wenn in J1 ein "x" drin steht, dann öffnet sich das Mail bevor ich es versenden kann, und kann in das Mail noch etwas Text dazuschreiben, falls notwendig und dann auf Senden im Outlook. So funktioniert es weiterhin ohne Probleme. Nur wenn eben J1 <> "x" dann bleibt der Code immer hängen mit Laufzeitfehler 5, an der Stelle ".send", siehe Screenshot.