Lotus Notes / Domino Sonstiges > OLE/COM-Programmierung

per VBA Vorlage öffnen, Adressaten einfügen und Mail versenden

(1/2) > >>

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