AtNotes Übersicht Willkommen Gast. Bitte einloggen oder registrieren.
20.09.20 - 12:11:35
Übersicht Hilfe Regeln Glossar Suche Einloggen Registrieren
News:
Schnellsuche:
+  Das Notes Forum
|-+  Lotus Notes / Domino Sonstiges
| |-+  OLE/COM-Programmierung
| | |-+  per VBA Vorlage öffnen, Adressaten einfügen und Mail versenden
« vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: per VBA Vorlage öffnen, Adressaten einfügen und Mail versenden  (Gelesen 10783 mal)
Bernhard66
Frischling
*
Offline Offline

Beiträge: 3


« am: 25.11.15 - 11:40:54 »

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
Gespeichert
Tode
Moderatoren
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 6479


Geht nicht, gibt's (fast) nicht... *g*


WWW
« Antworten #1 am: 25.11.15 - 12:10:42 »

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

Bitte in Zukunft Code in Code- Tags einschliessen, das erleichtert das lesen...
Gespeichert

Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen...

Mit jedem Tag meines Lebens erhöht sich zwangsweise die Zahl derer...
... denen ich am AdminCamp ein Bier schulde... Wenn ich hier jemanden angehe: Das ist nie persönlich, sondern immer gegen die "Sparwut" der Firmen gedacht, die ungeschultes Personal in die Administration unternehmenskritischer Systeme werfen... Sprecht mich einfach am AdminCamp an, ich zahle gerne zur "Wiedergutmachung" das ein oder andere Bierchen an der Bar
Fedaykin
Aktives Mitglied
***
Offline Offline

Geschlecht: Männlich
Beiträge: 229


Ya Hya Chouhada!


« Antworten #2 am: 25.11.15 - 12:13:47 »

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

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

Denn entweder zum Bearbeiten öffnen oder automatisch abschicken. Beides gleichzeitig passt irgendwie nicht zusammen.

Gruss
Remo
« Letzte Änderung: 25.11.15 - 17:25:35 von Fedaykin » Gespeichert

Ich sage Euch: "Man muss noch Chaos in sich haben, um einen tanzenden Stern gebären zu können."
Bernhard66
Frischling
*
Offline Offline

Beiträge: 3


« Antworten #3 am: 25.11.15 - 12:56:46 »

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


Gespeichert
Peter Klett
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 2690



« Antworten #4 am: 25.11.15 - 13:41:27 »

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.
Gespeichert
Bernhard66
Frischling
*
Offline Offline

Beiträge: 3


« Antworten #5 am: 25.11.15 - 15:11:35 »

Die beiden Lösungsvorschläge funktionieren leider nicht.   Huh

Nochmals zum Verständnis: das leere Template wird aus einem Gruppenbriefkasten heraus über VBA aufgerufen, über VBA befüllt (Betreff, Inhalt etc.) und soll nach den vorgenannten Schritten auch über VBA versendet werden. Das Template wird nicht manuelle editiert!

Wir freuen uns über weitere hilfreiche Lösungsvorschläge.

Danke
Bernhard
Gespeichert
thkn777
Aktives Mitglied
***
Offline Offline

Beiträge: 176


« Antworten #6 am: 08.01.16 - 11:05:35 »

Hm... ich dachte immer, UI und COM vertragen sich nicht? In der Notes Designer Hilfe steht zumindest auch "This class is not supported in COM" z.B. bei NotesUiWorkspace.

Idee:
Wirf den ganzen UI Kram raus und arbeite ausschließlich im Backend.

Tip:
Wenn Ihr mit Vorlagen arbeitet... dann paß auf beim Mail-Body. Den möchtest Du bestimmt nicht komplett überschreiben.

Viel Erfolg!
Gespeichert
Tode
Moderatoren
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 6479


Geht nicht, gibt's (fast) nicht... *g*


WWW
« Antworten #7 am: 08.01.16 - 14:20:52 »

@thkn777: ACHTUNG: COM != OLE !!!!

Mit der Zeile:
Set session = CreateObject("Notes.NotesSession")

erstellst Du ein OLE- Objekt (quasi eine "Fernsteuerung" eines laufenden Notes- Clients, der auch gestartet wird, wenn er noch nicht läuft) -> Alles ist erlaubt, auch NotesUIWorkspace und Konsorten. Die Einschränkungen bezüglich COM aus der Hilfe gelten NICHT.

Mit
Set session = CreateObject("Lotus.NotesSession")

erstellst Du ein COM- Objekt: Hier gehen nur Backend- Klassen...
Gespeichert

Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen...

Mit jedem Tag meines Lebens erhöht sich zwangsweise die Zahl derer...
... denen ich am AdminCamp ein Bier schulde... Wenn ich hier jemanden angehe: Das ist nie persönlich, sondern immer gegen die "Sparwut" der Firmen gedacht, die ungeschultes Personal in die Administration unternehmenskritischer Systeme werfen... Sprecht mich einfach am AdminCamp an, ich zahle gerne zur "Wiedergutmachung" das ein oder andere Bierchen an der Bar
Andrew Harder
Senior Mitglied
****
Offline Offline

Geschlecht: Männlich
Beiträge: 289



« Antworten #8 am: 08.01.16 - 15:58:52 »

Code:
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")
Was wird wohl passieren wenn an dieser Stelle jemand (oder später wenn das Dokument noch offen ist) STRG +S drückt?

Code:
Call .send(True)
           
            End With
Warum wollt Ihr eigendlich das Stationary versenden? Braucht Ihr das nicht mehr?
« Letzte Änderung: 08.01.16 - 16:05:53 von Andrew Harder » Gespeichert

Andy
thkn777
Aktives Mitglied
***
Offline Offline

Beiträge: 176


« Antworten #9 am: 26.01.16 - 16:01:11 »

@Tode
Ich scheine tatsächlich bisher nur letzteres gebraucht / benutzt zu haben.

Sorry, falls ich Verwirrung gestiftet habe...  Roll Eyes Embarrassed
Gespeichert
Seiten: [1] Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  


Einloggen mit Benutzername, Passwort und Sitzungslänge

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006, Simple Machines Prüfe XHTML 1.0 Prüfe CSS
Impressum Atnotes.de - Powered by Syslords Solutions - Datenschutz | Partner: