Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: email mit Lotus Notes nur anzeigen,nicht senden?

email mit Lotus Notes nur anzeigen,nicht senden?
Christoph
Hallo zusammen.
Hoffe ihr könnt auch hier wieder helfen,ist bestimmt nur eine Codezeile,ich werd noch wahnsinnig :)
Und zwar will ich die mail nicht direkt versenden,sondern nach dem automatischen Erstellen durch VBA möchte ich mir die Memo anzeigen lassen,damit der Benutzer manuell die Empfänger eintragen kann.
Ich benutze diesen Code.
Jemand ne Idee? Das wär klasse!
Option Explicit
Sub NotesMail()
Dim strEmpfaenger, strBetreff, strText, strcc, strbcc As String
Dim strFile As String
Dim Merker
Dim MerkerRef
Dim Merkertext
Dim Antwort
Dim Fehler
On Error GoTo Fehler
Antwort = Shell("C:\Program Files\Lotus\Notes\notes.exe " & _
"=H:\Notes\data\notes.ini", vbMinimizedFocus)
AppActivate "Microsoft Excel"
strEmpfaenger = "Deine email-Adresse"
strBetreff = "Test"
strText = "testmail"
'strFile = ""
NotesMailSend strEmpfaenger, strBetreff, strText, strcc, _
strbcc, strFile
Exit Sub
Fehler:
NotesMail
Exit Sub
End Sub
Function NotesMailSend(strEmpfaenger As Variant, strBetreff As Variant, _
strText As Variant, strcc As Variant, strbcc As Variant, strFilename As _
String)
' Dimensionierung der Objektvariablen
Dim objNotes As Object, objNotesDB As Object, objNotesMailDoc As Object
Dim SendItem, NCopyItem, BlindCopyToItem, i As Integer, rtitem
Dim msg As String
' Zuweisung der Objektvariablen
'On Error GoTo ExitF
Set objNotes = GetObject("", "Notes.Notessession")
Set objNotesDB = objNotes.GetDatabase("", "")
' Öffnen der Standard-Maildatenbank / Erstellen neues Maildokument
Call objNotesDB.OPENMAIL
'AppActivate "Microsoft Excel"
Set objNotesMailDoc = objNotesDB.CreateDocument
objNotesMailDoc.Form = "Memo"
Call objNotesMailDoc.Save(True, False)
Set SendItem = objNotesMailDoc.APPENDITEMVALUE("SendTo", "")
Set NCopyItem = objNotesMailDoc.APPENDITEMVALUE("CopyTo", "")
Set BlindCopyToItem = objNotesMailDoc.APPENDITEMVALUE("BlindCopyTo", "")
objNotesMailDoc.sendto = Split(strEmpfaenger, ";")
objNotesMailDoc.Subject = strBetreff
Set rtitem = objNotesMailDoc.CreateRichTextItem("Body")
objNotesMailDoc.body = strText
rtitem.ADDNEWLINE (1)
'Anhang
'Call rtitem.EmbedObject(1454, "", strFilename)
' als Entwurf speichern
Call objNotesMailDoc.Save(True, False)
'Senden
Call objNotesMailDoc.Send(False)
objNotesMailDoc.RemoveItem ("DeliveredDate")
Call objNotesMailDoc.Save(True, False)
' Nachricht an Benutzer
msg = "Die E-Mail wurde erfolgreich versendet!"
MsgBox msg, vbInformation, "email"
' Objektvariablen zurücksetzen
Call objNotes.Close
Set objNotes = Nothing
ExitF:
End Function
Ich denke, irgendwo zwischen ' als Entwurf speichern und 'Senden müßte man das ganze abfangen oder?
An dieser Stelle ist die Mail schon als Entwurf gespeichert.Wie kann ich diese nun in Lotus Notes einfach nur noch öffnen?
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: email mit Lotus Notes nur anzeigen,nicht senden?
28.07.2010 11:22:26
Klaus
Hi,
ohne mich mit LotusNotes auszukennen oder zu begreifen was der Code macht:
da er dokumentiert ist, tippe ich mal auf diese Zeile:
'Senden
Call objNotesMailDoc.Send(False)

Noch offen, da ich nur ins blaue geraten habe.
Grüße,
Klaus M.vdT.
AW: email mit Lotus Notes nur anzeigen,nicht senden?
28.07.2010 11:41:39
Christoph
Mit dieser Zeile wird die Mail versendet, ob True oder False...
Man muss hier mit Sicherheit eine Zeile vorher ansetzen und den Befehl zum Öffnen geben,aber wie?
(Denke ich mal...)
Anzeige
AW: email mit Lotus Notes nur anzeigen,nicht senden?
28.07.2010 12:05:41
Klaus
Hi,
ich hab in meiner Makrosammlung eins gefunden, dass eine LotusNotes Mail erstellt aber nicht absendet.
Vielleicht hilft dir das ja? Mich bitte nicht fragen, ich verstehs nicht (hab nur c&p gemacht).
Sub SendAsMail()
On Error Resume Next
'#  MAIL VORBEREITEN   ################################################################
'MsgBox ("Bitte achten Sie darauf, dass in Notes keine popups geöffnet sind wie z.B.: ' _
Sie haben eine neue Mail erhalten'")
'MsgBox ("Bei einer Fehlermeldung bitte auf 'Beenden' klicken." & VBA.Chr(13) & "Die  _
Mail wird trotzdem vorbereitet." & VBA.Chr(13) & VBA.Chr(13) & "Danke")
'Variablen Dimensionieren, die benötigt werden, um das Mail zu senden
Dim mRows As Integer
Dim mCols As Long
Dim Maildb As Object 'Die Datenbank
Dim UserName As String 'Der Benutzername
Dim MailDbName As String 'Der Datenbankname
Dim MailDoc As Object 'Das Maildokument selbst
Dim AttachME As Object 'Der Anhang (Richtext)
Dim Session As Object 'Die Notes Session
Dim EmbedObj As Object 'Ein eingebettetes Objekt (Anhang)
Dim ClipBoard As DataObject
Dim SaveIt As Boolean
Dim Subject As String
Dim Attachment1 As String
Dim Attachment2 As String
Dim Recipient As String
Dim cc As String
Dim BodyText As String
Subject = "Zahlen von " & Date
Recipient = "Hans@Wurst.de"
cc = ""
Attachment = "C:\Pfad\Datei1.pdf"
Attachment2 = "C:\Pfad\Datei2.pdf"
BodyText = Chr(13) & Chr(13) & Chr(13) & "Moin Hans," & Chr(13) & "Im Anhang findest du  _
die aktuellen Zahlen." & Chr(13) & ""
Dim filename As String
Dim numrows As Long
Dim numcols As Integer
Dim r As Long
Dim c As Integer
Dim data
Dim exprng As Range
Set exprng = Selection
numcols = exprng.Columns.Count
numrows = exprng.Rows.Count
'Die Session starten
Set Session = CreateObject("Notes.NotesSession")
'Den Benutzernamen auslesen und den Dateinamen
'der MailDB errechnen
'Dies wird nicht überall benötigt. Auf manchen
'Systemen kann auch ein leerer String übergeben werden
UserName = Session.UserName
'MailDbName = Left$(UserName, 1) & Right$(UserName, (Len(UserName) _
- InStr(1, UserName, " "))) & ".nsf"
MailDbName = "mail\saog.nsf"
'Datenbank öffnen
Set Maildb = Session.GETDATABASE("", MailDbName)
If Maildb.IsOpen = True Then
'Fertig zum mailen!
Else
Maildb.OPENMAIL
End If
'Ein neues Maildokument erstellen
Set MailDoc = Maildb.CREATEDOCUMENT
MailDoc.Form = "Memo"
MailDoc.sendto = Recipient & ", " & cc
MailDoc.Subject = Subject
MailDoc.body = BodyText
MailDoc.SAVEMESSAGEONSEND = SaveIt
'Eingebettete Objekte und Anhänge hinzufügen
If Attachment  "" Then
Set AttachME = MailDoc.CREATERICHTEXTITEM("Attachment")
Set EmbedObj = AttachME.EMBEDOBJECT(1454, "", Attachment, _
"Attachment")
'MailDoc.CREATERICHTEXTITEM ("Attachment")
End If
If Attachment2  "" Then
Set AttachME = MailDoc.CREATERICHTEXTITEM("Attachment")
Set EmbedObj = AttachME.EMBEDOBJECT(1454, "", Attachment2, _
"Attachment")
'MailDoc.CREATERICHTEXTITEM ("Attachment")
End If
Dim Workspace As Object
Set Workspace = CreateObject("Notes.NOTESUIWORKSPACE")
Call Workspace.editdocument(True, MailDoc).GOTOFIELD("Body")
'  MsgBox ("Die Mail wurde erstellt")
'Aufräumen
Set Maildb = Nothing
Set MailDoc = Nothing
Set AttachME = Noth
Set Session = Nothing
Set EmbedObj = Nothing
End Sub

Anzeige
AW: email mit Lotus Notes nur anzeigen,nicht senden?
28.07.2010 12:45:31
Christoph
Das hab ich gebraucht:
Dim Workspace As Object
Set Workspace = CreateObject("Notes.NOTESUIWORKSPACE")
Call Workspace.editdocument(True, MailDoc).GOTOFIELD("Body")
Hat geklappt!
Suuuper!!!
Vielen Dank !
Danke für die Rückmeldung ...
28.07.2010 13:21:04
Klaus
... freut mich dass ich helfen konnte!
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Lotus Notes E-Mail anzeigen ohne zu senden


Schritt-für-Schritt-Anleitung

Um eine E-Mail in Lotus Notes zu erstellen und sie nur anzuzeigen, anstatt sie direkt zu senden, kannst Du den folgenden VBA-Code verwenden. Dieser Code öffnet die E-Mail im Bearbeitungsmodus, sodass der Benutzer die Empfänger manuell eintragen kann.

Sub NotesMail()
    Dim strEmpfaenger As String
    Dim strBetreff As String
    Dim strText As String
    Dim objNotes As Object
    Dim objNotesDB As Object
    Dim objNotesMailDoc As Object
    Dim Workspace As Object

    strEmpfaenger = "Deine email-Adresse"
    strBetreff = "Test"
    strText = "testmail"

    ' Lotus Notes Session starten
    Set objNotes = CreateObject("Notes.NotesSession")
    Set objNotesDB = objNotes.GetDatabase("", "")

    ' Standard-Maildatenbank öffnen
    Call objNotesDB.OPENMAIL

    ' Neues Maildokument erstellen
    Set objNotesMailDoc = objNotesDB.CreateDocument
    objNotesMailDoc.Form = "Memo"
    objNotesMailDoc.Subject = strBetreff
    objNotesMailDoc.Body = strText

    ' Maildokument speichern
    Call objNotesMailDoc.Save(True, False)

    ' E-Mail im Bearbeitungsmodus öffnen
    Set Workspace = CreateObject("Notes.NOTESUIWORKSPACE")
    Call Workspace.EditDocument(True, objNotesMailDoc)
End Sub

Häufige Fehler und Lösungen

Fehler: Die E-Mail wird direkt gesendet, anstatt sie nur anzuzeigen.
Lösung: Stelle sicher, dass Du die Zeile Call objNotesMailDoc.Send(False) aus dem Code entfernst. Diese Zeile sorgt dafür, dass die E-Mail sofort versendet wird. Stattdessen solltest Du den EditDocument-Befehl verwenden, um die E-Mail im Bearbeitungsmodus zu öffnen.


Alternative Methoden

Eine weitere Möglichkeit, um eine Lotus Notes E-Mail anzuzeigen, besteht darin, das vorhandene Beispiel von Klaus zu nutzen, das eine E-Mail vorbereitet, ohne sie zu senden:

Sub SendAsMail()
    ' Code zur Vorbereitung der E-Mail
    ' ...
    ' Maildokument erstellen
    Set MailDoc = Maildb.CREATEDOCUMENT
    MailDoc.Form = "Memo"
    ' ...

    ' E-Mail im Bearbeitungsmodus öffnen
    Dim Workspace As Object
    Set Workspace = CreateObject("Notes.NOTESUIWORKSPACE")
    Call Workspace.EditDocument(True, MailDoc)
End Sub

Praktische Beispiele

Hier ist ein praktisches Beispiel, das zeigt, wie Du eine E-Mail mit einer Anhänge und einem benutzerdefinierten Text erstellen kannst:

Sub CreateEmailWithAttachment()
    ' Variablen deklarieren
    Dim MailDoc As Object
    Dim AttachME As Object
    Dim Workspace As Object

    ' Lotus Notes Session starten
    Set Session = CreateObject("Notes.NotesSession")
    Set MailDoc = Session.GETDATABASE("", "mail\deinMailDB.nsf").CREATEDOCUMENT

    ' Maildokument konfigurieren
    With MailDoc
        .Form = "Memo"
        .sendto = "email@example.com"
        .Subject = "Betreff hier"
        .Body = "Nachrichtentext hier"
    End With

    ' E-Mail im Bearbeitungsmodus öffnen
    Set Workspace = CreateObject("Notes.NOTESUIWORKSPACE")
    Call Workspace.EditDocument(True, MailDoc)
End Sub

Tipps für Profis

  • Verwende On Error Resume Next zu Beginn Deines Codes, um sicherzustellen, dass Dein Skript bei Laufzeitfehlern nicht abbricht.
  • Halte Deine Lotus Notes Umgebung stets aktuell, um Komplikationen mit VBA zu vermeiden.
  • Experimentiere mit der RichTextItem-Eigenschaft, um formatierte E-Mails zu erstellen.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass die E-Mail nicht gesendet wird?
Entferne die Zeile Call objNotesMailDoc.Send(False) aus Deinem Code. Stattdessen kannst Du Call Workspace.EditDocument(True, MailDoc) verwenden, um die E-Mail zu öffnen.

2. Muss ich Lotus Notes Webmail verwenden?
Nein, der bereitgestellte VBA-Code funktioniert in der Desktop-Version von Lotus Notes. Wenn Du jedoch Lotus Notes Webmail verwendest, musst Du möglicherweise eine andere API oder Methode zur Automatisierung verwenden.

3. Funktioniert dieser Code auch mit HCL Notes?
Ja, der Code ist kompatibel mit HCL Notes, da es sich um die gleiche Software handelt, nur unter einem anderen Namen.

Denke daran, die E-Mail-Adressen und Betreffzeilen entsprechend Deiner Anforderungen anzupassen!

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige