Lotus Notes / Domino Sonstiges > OLE/COM-Programmierung
per VBA Vorlage öffnen, Adressaten einfügen und Mail versenden
Bernhard66:
Hallo zusammen,
ich bin neu hier und auch kein Programmierer :-(
In unserem Unternehmen sind wir gerade dabei, Lotus Notes in eine Excel-Anwendung einzubinden. Hierfür soll per VBA eine bestehende Notes Vorlage aus einem Gruppenbriefkasten geöffnet werden, Emailempfänger und Betreff aus Excel in die Vorlage übernommen werden und das Mail automatisch versendet werden (also nicht manuell). Und genau beim letzten Schritt des Versendens erhalten wir eine Fehlermeldung, die wie folgt lautet:
"Lotus/IMB doesn't recommend to use 'ESC' and send. Please use send buttons or save as draft"
Unser VBA-Spezialist kann den Fehler leider nicht beheben. Er verwendet folgenden Code:
Sub LNote()
Dim LoNotes As Object, MailDoc As Object, session As Object, View As Object, _
noteCursorDoc As Object, StationeryObject As Object, MDC As Object, _
NewMail As Object, Doc As Object
Dim workspace As Variant
Dim Mail_Server As String, Mail_File As String, Sl_Temp As String, _
TempName As String, TempSubject As String, ADR As String, MailT As String
'---------------------------------------------------------------------------------'
' '
'---------------------------------------------------------------------------------'
Set session = CreateObject("Notes.NotesSession")
'---------------------------------------------------------------------------------'
' Gruppenbriefkasten (BIITE ÄNDERN!!) '
'---------------------------------------------------------------------------------'
Mail_Server = session.GetEnvironmentString("aus Datenschutzgründen entfernt", True)
Mail_File = session.GetEnvironmentString("aus Datenschutzgründen entfernt", True)
'---------------------------------------------------------------------------------'
' ...entsprechend ..... '
'---------------------------------------------------------------------------------'
Set LoNotes = session.GetDatabase("aus Datenschutzgründen entfernt")
If (LoNotes.IsOpen = False) Then LoNotes.OPENMAIL
'---------------------------------------------------------------------------------'
' '
'---------------------------------------------------------------------------------'
Set View = LoNotes.GetView("Stationery")
Set workspace = CreateObject("Notes.NotesUIWorkspace")
Set noteCursorDoc = View.GetFirstDocument
'---------------------------------------------------------------------------------'
' Mail-Vorlage bestimmen (leere Vorlage) '
'---------------------------------------------------------------------------------'
Sl_Temp = "0 TEMPLATE"
'---------------------------------------------------------------------------------'
' Vorhandene Vorlagen durchlaufen und suchen .... '
'---------------------------------------------------------------------------------'
Do While Not noteCursorDoc Is Nothing
Set StationeryObject = noteCursorDoc.getFirstItem("Subject")
TempSubject = StationeryObject.Text
Set StationeryObject = noteCursorDoc.getFirstItem("MailStationeryName")
TempName = StationeryObject.Text
'------------------------------------------------------------------------------'
' Vorlage gefunden '
'------------------------------------------------------------------------------'
If (UCase(TempSubject) = Sl_Temp Or UCase(TempName) = Sl_Temp) Then
GoTo EditMail
'------------------------------------------------------------------------------'
' Vorlage noch nicht gefunden, nächster Eintrag ..... '
'------------------------------------------------------------------------------'
Else
Set noteCursorDoc = View.GetNextDocument(noteCursorDoc)
End If
Loop
'---------------------------------------------------------------------------------'
' Vorlage nicht vorhanden '
'---------------------------------------------------------------------------------'
Exit Sub
'---------------------------------------------------------------------------------'
' Vorlage editieren '
'---------------------------------------------------------------------------------'
EditMail: Set NewMail = workspace.EDITDOCUMENT(True, noteCursorDoc)
ADR = "xxx@xxxx.DE"
With NewMail
Call .FieldSetText("EnterSendTo", ADR)
Call .FieldSetText("Subject", "WG: Neues Testverfahren")
Call .FieldSetText("Body", "Freier Text")
'----------------------------------------------------------------------------'
' DIESER AUFRUF FÜHRT IN LOTUS NOTES ZU EINER FEHLERSITUATION!! '
'----------------------------------------------------------------------------'
Call .send(True)
End With
End Sub
Hat jemand eine Idee, woran es liegen könnte, dass das mail nicht versendet werden kann? Die automatische Rechtschreibprüfung in LN haben wir bereits deaktiviert....
Danke vorab und schönen Gruß
Bernhard
Tode:
Mal abgesehen dass der Code für eine Mail die man nicht editieren will "suboptimal" ist (das würde komplett ohne NotesUIWorkspace auskommen) wäre natürlich schön gewesen zu wissen, wie genau die Fehlermeldung lautet.
Ich weiss es aber auch so: Send ist sowohl eine Methode der Klasse NotesDocument, als auch eine Methode der Klasse "NotesUIDocument". Und euer NewMail- Objekt ist ein NotesUIDocument.
Für NotesUIDocument hat die Methode aber keinen Parameter. Die Zeile müsste lauten:
--- Code: ---.send
--- Ende Code ---
Bitte in Zukunft Code in Code- Tags einschliessen, das erleichtert das lesen...
Fedaykin:
Hallo Bernhard
Wenn Du das einfach abschicken willst dann
ersetze doch mal:
--- Code: ---EditMail: Set NewMail = workspace.EDITDOCUMENT(True, noteCursorDoc)
ADR = "xxx@xxxx.DE"
With NewMail
Call .FieldSetText("EnterSendTo", ADR)
Call .FieldSetText("Subject", "WG: Neues Testverfahren")
Call .FieldSetText("Body", "Freier Text")
'----------------------------------------------------------------------------'
' DIESER AUFRUF FÜHRT IN LOTUS NOTES ZU EINER FEHLERSITUATION!! '
'----------------------------------------------------------------------------'
Call .send(True)
End With
--- Ende Code ---
durch:
--- Code: ---ADR = "xxx@xxxx.DE"
noteCursorDoc.ReplaceItemValue "SendTo", ADR
noteCursorDoc.ReplaceItemValue "Subject", "WG: Neues Testverfahren"
noteCursorDoc.ReplaceItemValue "Body", "Freier Text"
noteCursorDoc.send False, False
--- Ende Code ---
Denn entweder zum Bearbeiten öffnen oder automatisch abschicken. Beides gleichzeitig passt irgendwie nicht zusammen.
Gruss
Remo
Bernhard66:
Dankeschön an Torsten und Remo! Wenn wir die beiden Lösungen getestet haben, geben wir euch eine Rückmeldung, ob es funktioniert.
Die Fehlermeldung lautet, das hatte ich eingangs beschrieben, wie folgt:
"Lotus/IMB doesn't recommend to use 'ESC' and send. Please use send buttons or save as draft"
Bei der Vorlage, die wir verwenden, handelt es sich um eine Vorlage ohne Inhalt. Sie dient eigentlich nur dazu, das Layout der Firma samt Logo und Fußzeile verwenden zu können. Der Inhalt des Body ändert sich und wird je nach Art des Geschäftsvorfalles automatisch einkopiert. Die Mail wird also editiert vor dem Versand.
Nochmals Danke
Bernhard
Peter Klett:
Wenn die Mail editiert werden soll, macht ein Senden des Dokuments im Script aber keinen Sinn.
Also
Mail erstellen und öffnen zum Editieren
oder
Mail komplett erstellen und versenden
Aber
Mail erstellen, öffnen zum Editieren und dann (im gleichen Script) versenden kann nicht funktionieren, der Versand erfolgt dann vor der Änderung durch den Benutzer.
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln