Das Notes Forum
Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: Pinky0105 am 15.06.16 - 15:28:00
-
Hallo zusammen, nachdem mir schon einige geholfen haben mein Projekt umzusetzen, hoffe ich nochmal auf Hilfe bei meinem letzten Problem.
Es funktioniert soweit alles, es wird aus Excel heraus die Mail versendet und es erfolgt ein Eintrag unter "gesendet". Doch wenn ich mir unter gesendet die Mail aufrufe, so fehlt der komplette Inhalt. Ich erhalte auch keine Fehlermeldung oder sonstiges. Anbei mein aktueller Code:
Sub EinzelMail()
Dim session As Object
Dim db As Object
Dim doc As Object
Dim strTo As Variant
Dim strPath As String
Dim EmbedObj As Object 'The embedded object (Attachment)
Dim AttachME As Object 'The attachment richtextfile object
Dim Workspace As Object
Dim uidoc As Object
Dim Empfaenger As String
Dim EmpfNachName As String
Dim EmpfMail As String
Dim Termin As Date
Dim Betreff As String
Dim Anrede As String
Anrede = Sheets("Formular").Range("E3").Value
Empfaenger = Sheets("Formular").Range("C10").Value
EmpfNachName = Trim(Mid(Empfaenger, (InStr(1, Trim(Empfaenger), " ") + 1), 50))
EmpfMail = Sheets("Formular").Range("C3").Value
Termin = Sheets("Formular").Range("D3").Value
Betreff = Sheets("Formular").Range("K3").Value
Set session = CreateObject("Notes.NotesSession")
Set db = session.GetDatabase(SERVER, MAILIN.nsf") 'Server und Pfad der MailInDB, zu finden in NotesKachel-Eigenschaften
If db.IsOpen = False Then db.OPENMAIL
Set doc = db.CreateDocument
With doc
.form = "Memo"
.SendTo = EmpfMail
.Subject = Betreff
.Sign = "0"
.SaveMessageOnSend = True
.Save = True
.posteddate = Now()
.ReplyDate = Termin
End With
Set Workspace = CreateObject("Notes.NotesUIWorkspace")
Set uidoc = Workspace.EDITDOCUMENT(True, doc)
With uidoc
.GOTOFIELD ("Body")
If Anrede = "Herr" Then
.inserttext ("Sehr geehrter Herr " & EmpfNachName & "," & vbCrLf & vbCrLf)
Else
.inserttext ("Sehr geehrte Frau " & EmpfNachName & "," & vbCrLf & vbCrLf)
End If
.inserttext ("nachstehend erhalten Sie Ihre Planungsaufgabe:" & vbCrLf)
.inserttext (vbCrLf)
Sheets("Formular").Range("A5:G22").Copy 'Bereich mit dem zu übernehmenden Text
.Paste
.inserttext (vbCrLf)
Call doc.Save(True, False, True)
.send
.document.SaveOptions = "0"
.Close
End With
Set EmbedObj = Nothing
Set AttachME = Nothing
Set uidoc = Nothing
Set Workspace = Nothing
Set db = Nothing
Set doc = Nothing
Set session = Nothing
MsgBox "Die Mail wurde erfolgreich erstellt. Wechseln Sie nun zu Lotus Notes!", vbInformation
End Sub
Irgendwie hab ich Tomaten auf den Augen, zumindest find ich den Fehler nicht. ???
Ich hoffe daher nochmals auf Eure Hilfe und sag im voraus vielen herzlichen Dank. :love:
-
Da hier munter Aktionen im Frontend und gleichzeitig im Backend vermischt werden, beissen sich diese auch ebenso heftig:
uidoc.Paste '(RT-)Inhalt imn Frontend einfügen
uidoc.inserttext (vbCrLf) 'Text im Frontend einfügen
Call doc.Save(True, False, True) 'Im Backend speichern (das weiss aber nichts von den Frontend-Aktionen!)
uidoc.send 'die Frontend-erzeugten Inhalte versenden
uidoc.document.SaveOptions = "0" 'dem Backend-Dokument jede weitere Speicherung im Frontend unmöglich machen
So kann das also niemals funktionieren.
-
With uidoc
.GOTOFIELD ("Body")
If Anrede = "Herr" Then
.inserttext ("Sehr geehrter Herr " & EmpfNachName & "," & vbCrLf & vbCrLf)
Else
.inserttext ("Sehr geehrte Frau " & EmpfNachName & "," & vbCrLf & vbCrLf)
End If
.inserttext ("nachstehend erhalten Sie Ihre Planungsaufgabe:" & vbCrLf)
.inserttext (vbCrLf)
Sheets("Formular").Range("A5:G22").Copy 'Bereich mit dem zu übernehmenden Text
.Paste
.inserttext (vbCrLf)
Call doc.Save(True, False, True)
Call .Save
.send
.document.SaveOptions = "0"
.Close
End With
Du musst das uidoc speichern, und nicht das doc
-
Jaaaaaa, das war´s.
Call .Save
Viiiiieeeelen herzlichen Dank!
@koehlerbv: Sorry, ich bin kein hauptberuflicher Entwickler/Programmierer, daher kenn ich mich da nicht so aus. Ich programmier einfach munter drauf los, hole mir fehlende Teile aus dem Weltnetz und bastel solang rum bis es funktioniert. Backend und Frontend in diesem Zusammenhang sagen mir da leider nicht viel aber ich danke Dir sehr für Kommentare hinter den Code-Zeilen. So hab ich wieder was dazugelernt.
Dennoch euch beiden vielen herzlichen Dank. Nun funktioniert alles, auch wenn es vielleicht nicht ganz so sauber programmiert ist.
-
... auch wenn es vielleicht nicht ganz so sauber programmiert ist.
Du erstellst die Mail im Backend mit allen benötigten Daten, dann öffnest Du sie, um im Frontend den Inhalt (Richtext, Body), der im wesentlichen aus dem Inhalt der Zwischenablage besteht (Übernahme eines Bereiches aus Excel, Zwischenablage geht nur im Frontend), zu setzen.
Versenden und Speichern erfolgt im Frontend, da sonst der Inhalt der Mail fehlt. SaveOptions kannst Du nur im Backend setzen, da das nicht im geöffneten Dokument bearbeitbar ist, brauchst Du aber, um beim Schließen (wieder Frontend) die Speicherfrage zu umgehen.
Beim besten Willen kann ich hier nicht ansatzweise erkennen, was daran "nicht ganz so sauber" sein soll. Ich hätte das genauso umgesetzt, wenn ich Inhalt aus der Zwischenablage per Mail versenden sollte.