Office Programme

Zugriff auf Lotus Notes E-Mail über VBA

Lotus Notes E-Mail

Neben Outlook gibt es noch das Programm Lotus Notes um Mails verschicken zu können. Nur leider ist die Ansteuerung von Lotus Notes über VBA nicht so einfach, wie mit Outlook. Bei Lotus Notes  muss man über VBA separat mitteilen, dass man eine E-Mail verschicken will. Die folgende Funktion zeigt, wie eine Mail inkl. Anhang über VBA mit dem Lotus Notes Client verschickt wird :

Sub Send_Mail()

Dim Maildb As Object
Dim UserName As String
Dim MailDbName As String
Dim MailDoc As Object
Dim Session As Object
Dim Recipient As String
Dim attachment As String

Set Session = CreateObject("Notes.NotesSession")
Set Maildb = Session.currentdatabase
Set MailDoc = Maildb.CreateDocument

attachment = "<Pfad zur Datei>"

MailDoc.Form = "Memo"
Recipient = "name@domain.tld"
MailDoc.sendto = Recipient
MailDoc.Subject = "Das ist Ihr Betreff !!"
MailDoc.body = "Hier steht der Mailtext"

' Zum Versenden der angegebenen Datei von der Variable attachment                        
stAttachment = ActiveWorkbook.FullName
Set AttachME = MailDoc.CREATERICHTEXTITEM("stAttachment")
Set EmbedObj = AttachME.EMBEDOBJECT(1454, "", attachment, "stAttachment")
                        
MailDoc.SAVEMESSAGEONSEND = True
MailDoc.Send 0, Recipient
Set Maildb = Nothing
Set MailDoc = Nothing
Set AttachME = Nothing
Set Session = Nothing
Set EmbedObj = Nothing

End Sub
  • Über die DIM-Befehle werden alle entsprechenden Variablen deklariert.
  • Die Set-Befehle initialisieren ein Object für die aktuelle Notes Session.
  • Die MailDoc.Form legt eine neue Nachricht fest.
  • Der E-Mail Empfänger wird in Mail.sendto festgelegt.
  • Der Betreff der E-Mail wird in Mail.Subject festgelegt.
  • Mit Mail.Body wird der eigentliche Mailtext festgelegt.
  • Die nächsten drei Zeilen, werden nur dann benötigt, wenn an die zu versendende E-Mail ein Anhang angehängt werden soll.
  • Mit MailDoc.SAVEMESSAGEONSEND wird festgelegt, ob die versendete E-Mail im Gesendet-Ordner gespeichert wird oder nicht (TRUE = speichern und senden / FALSE = nur senden).
  • MailDoc.Send versendet die E-Mail.
  • Mit den letzten Set-Befehlen werden wieder alle Variablen zurückgesetzt.

Für die Ausführung dieser Funktion muss das Programm Lotus Notes geöffnet sein.

20 Gedanken zu „Zugriff auf Lotus Notes E-Mail über VBA

      1. MailDoc.Send 0, Recipient ersetzen durch
        Call MailDoc.SEND(False)
        Dann speichert Lotus die angesendeten Mails. Leider kann ich die Frage, wie die Mails nicht sofort versendet werden, nicht beantworten. Viele Grüße Robert

        1. Sorry, leider klappt meine Lösung eher sporadisch. Habe jetzt eine andere Variante die besser ist:
          Also MailDoc.Send 0, Recipient raus
          Call MailDoc.SEND(False) auch raus
          Dafür einsetzen:
          Dim Workspace As Object
          Set Workspace = CreateObject(„Notes.NOTESUIWORKSPACE“)
          Call Workspace.editdocument(True, MailDoc).GOTOFIELD(„Body“)
          Damit wird die Mail übertragen aber nicht versendet und ich kann den Sendeknopf selber
          drücken. Dann wird die Mail natürlich auch abgespeichert. Einziges Manko – man bleibt in Excel und muss LotusNotes noch selbst anwählen. Damit kann ich aber leben. Würde mich freuen jemand findet noch eine bessere Lösung vor allem eine die ich verstehe. Viele Grüße

          Robert

  1. Hallo Rolf,

    Dein Code ist schon ziemlich genial, zumal er wirklich sehr kurz gehalten ist. Klasse!
    Hast Du auch eine Lösung, wie ich eine bestehende Lotus Notes Vorlage via VBA versenden kann und ggf. nur noch den Empfänger automatisch verändere?

    VG Florian

  2. Hallo,
    funktioniert toll,
    Gibt es auch eine Möglichkeit, dass die E-mail nicht sofort versendet wird, sondern nur inkl. angezeigt, sodass ich vor dem Senden noch etwas ergänzen kann?

    LG Herbert

    1. Einfach die Zeile „MailDoc.Send 0, Recipient“ auskommentieren. Dann sollte die E-Mail erstellt werden aber nicht gesendet. Kann nur leider gerade nicht testen, da ich keine Lotus-Notes Installation zur Verfügung habe.

      1. Hallo,
        ein tolles Beispiel, aber das Auskommentarisieren der Zeile „MailDoc.Send 0,Recipient“ funktioniert nicht.
        Die Mail ist auch nicht im gesendet Folder.
        Gibt es eine Möglichkeit, die Mail nicht zu senden und in den Entwurfs Folder zu speichern ?
        Über eine Antwort würde ich mich sehr freuen.

        Danke

        U. Schmidt

        1. Hallo,

          wie sieht der Quelltextabschnitt aus ? Einfach hier mal posten. Dann kann ich mehr sagen, warum die Mail nicht im gesendet Ordner drin ist. Ob es die Möglichkeit gibt die Mail in den Entwurfsordner abzulegen, weiß ich nicht. Ich habe aber auch keine Möglichkeit dieses Auszuprobieren, da ich kein Lotus Notes mehr zur Verfügung habe. Diese Funktion wurde mit Lotus Notes 6.x 7.x und 8.x getestet. Hier hat es funktioniert.

  3. Hallo,
    bin heute über dein Code-Schnipsel gestoßen und muss sagen ist super. Aber eine, ne, zwei Fragen hätte ich dazu: Wie kann man mehrere Empfänger angeben und was schreib man für die Mail-Kopie?
    MfG Hp.B

    1. Hab’s herausgefunden: Mehrere Empfänger nur durch Komma trennen.
      Für Copy und BlindCopy einfach die folgenden Zeilen ergänzen:
      RecCopyTo = „j.nameA@xyz.com, z.nameD@xyz.com
      RecBlindCopyTo = „a.nameB@xyz.com“

      MailDoc.CopyTo = RecCopyTo
      MailDoc.BlindCopyTo = RecBlindCopyTo
      MfG Hp. Blt

  4. Funktioniert soweit gut. Ein kleines Problem hab ich noch: die standard Mailsignatur wird vor den Nachrichtentext gestellt. Wie kann ich das umdrehen?

    lg
    Kurti

  5. Hallo zusammen,

    erstmal danke die Gründer dieses Forums. Ich bin erst Neuling in der VBA Welt und bitte um eure Unterstützung.

    Zunächst folgendes zu mein Problem:

    Ich habe eine große Excel File / Pivot-Tabelle mit Daten gefüllt im Bereich A1:EG500.
    Spalte P1:P500 stehen Namen.

    Der Code funktioniert tadellos. Jedoch möchte ich, wenn ich das Makro ausführe, dass Emails an alle Personen die in dem aktuell gefilterten Ansicht stehenden Namen sind, schicken soll.

    Alternativ Dazu kann ich noch eine weitere separate Spalte „Q“ neben den Namen erstellen und jeweils die Emailaccounts in dieser Spalte eintragen damit das Makro auf diese Spalte zugreift statt auf P und die Emails sich direkt aus dieser Spalte nimmt und schickt.

    Meine Frage wäre nun, wie der Code dafür aussehen muss und in welche Stelle in den Zusatzcode hineinbasteln soll?

    Besten Dank im Voraus an alle die etwas beitragen.

    Grüße aus Heilbronn
    Memo

  6. Gibt es eine Möglichkeit, kein Neues Dokument zu erstellen, sondern ein vorhandenes Dokument aus einem Ordner zu nehmen, dieses anzupassen, zu versenden und dann aber wieder als Vorlage zu speichern?

    Vielen Dank im Voraus.
    Simon

  7. Hallo,
    bin gerade über diesen Quelltext gestolpert, finde ihn klasse kurz, er funktioniert einwandfrei!
    Gibt es eine Möglichkeit den Briefkopf und die Signatur mit einzubinden, das wäre super.
    Danke im Voraus

  8. Hallo,
    erst einmal Dankeschön für den Code!
    Wie versende ich ein Attachment? Im Code steht „stAttachment = ActiveWorkbook.FullName“, was wahrscheinlich „Set attachment“ heißen soll!?! Auch wenn ich es ändere, kommt immer noch eine Fehlermeldung. Kann „ActiveWorkbook.FullName“ so stehen bleiben oder muss ich bei „FullName“ noch etwas eingeben? Attachment habe ich bereits mit Pfad zugewiesen. attachment = „C:\Ordner\Bildname.png“
    Wo liegt mein Fehler?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.