Outlook Mail wird nicht gesendet

josef24

Erfahrenes Mitglied
Hallo zusammen, ich habe mit u. a. das Problem das mein Partner, wenn er den Code ausführt die Mail nicht gesendet wird.
Er hat Office 2016, ich arbeite in Office 2019.

Bei mir wird die Mail gleich gesendet, wenn ich den Code ausführe.

Hat hierfür einer eine Idee, warum das Senden von meinem Mitstreiter aus nicht funktioniert?

Gruß Josef


Visual Basic:
Private Sub CommandButton1_Click()

  Dim WSh As Worksheet
  Dim sMailtext As String
  Dim sBer As String

      Set WSh = ThisWorkbook.Sheets("Info")                ' Blatt mit Maildaten
      sBer = "A1:G90"  '  & WSh.Cells(Rows.Count, "B").End(xlUp).Row  ' Kopierbereich

  WSh.Range(sBer).Copy                                      ' Bereich kopieren

  With CreateObject("Outlook.Application").CreateItem(0)
      .BodyFormat = 2                                       ' 2=HTML-Format, 3=Richtext
      .Subject = "Änderungen" '  & WSh.Range("G7")            ' Betreff
          .To = "xxxxxxxxxx@t-online.de"                         ' Empfänger
          '  .CC = "yyyyyyyyyyyy@t-online.de"                      ' Info- Empfänger
          sMailtext = "Aktueller Änderungsumfang"       ' Mailbodytext
     '  sMailtext = Replace(sMailtext, "¶", vbLf)             ' Umbrüche einfügen
          .GetInspector                                         ' Signatur holen
          .htmlbody = Replace(sMailtext, vbLf, "<br>") & .htmlbody

            .Display  ' Auf dem Display anzeigen

      With .GetInspector.WordEditor.Application.Selection
          .Start = Len(sMailtext):   .Paste                 ' Grafik in Mail einfügen
      End With
      .send
  End With

            Worksheets("ArbTab").Visible = True
             Worksheets("PLZ").Visible = True


' Ab hier "Die Datei wird automatisch beendet

        Application.DisplayAlerts = False  ' Alle Meldungen ausschalten
        Workbooks("Neue Datei für DEMO.xlsm").Close SaveChanges:=True
        Application.DisplayAlerts = True  ' Nach dem Speichern alle Meldungen wieder einschalten

    For Each WSh In Application.Workbooks
Next
Application.Quit

End Sub
 
Danke, er wohnt nicht um die Ecke, werde ihn später kontaktieren. Wenn es nicht so wäre, würde ich nochmal nachfragen. Gruß Josef
 
Hallo zusammen. Jetzt weiß ich, warum die Mail nicht gesendet wurde. Der Commandbutton zum Beenden wurde nicht genutzt. Man hat einfach mit dem X die Datei geschlossen. Ich hätte dazu die Frage: Kann man die Nutzung des Commandbutton irgendwie erzwingen, im VBA Code entsprechend einbauen. Das mit dem X hatte ich überhaupt nicht bedacht. Gruß Josef
 
In Excel, im VBA-Editor auf "DieseArbeitsmappe" gehen, dort das Object "WorkBook" auswählen, und das Ereignis "BeforeClose" wählen

Unbenannt.jpg


EDIT: Kleiner Trick um Leute in den Wahnsinn zu treiben:
Setz mal innerhalb des Ereignisses Cancel auf True, und die Leute werden bescheuert... *fgggg*
Visual Basic:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Cancel = True
End Sub
 
Danke, kannst du mir mal auf die Sprünge helfen, wie ich den Code einbauen kann? Bin da etwas ratlos.
 
Die Excel öffnen, ALT+F11 (VBA-Editor),
Doppelclick auf "DieseArbeitsmappe"
Unbenannt.jpg

Links oben im Code-Fenster "Workbook" auswählen. Es wird standardmässig das "Open"-Ereignis gewählt.
Im rechten Dropdown das "BeforeClose"-Ereignis wählen, deinen Code da eingeben,
Workbook_Open löschen
Unbenannt.jpg
 
Danke, das war der Ansatz der mir gefehlt hat. Also mit X kann man nicht mehr beenden.
Code:
Visual Basic:
  Option Explicit

Private Sub Workbook_BeforeClose(Cancel As Boolean)

MsgBox "Kann nur über Arbeit beenden geschlossen werden"

Cancel = True
End Sub

Aber wenn ich das laufen lasse "Private Sub CommandButton1_Click()" kommt Laufzeitfehler 13 (Typenunverträglichkeit als Fehlermeldung) von Zeile 40 bzw. 41 aus Code #1
Die Datei wird damit nicht mehr geschlossen.

Gruß Josef
 
Zuletzt bearbeitet:
Zurück