Das Notes Forum

Lotus Notes / Domino Sonstiges => OLE/COM-Programmierung => Thema gestartet von: oberh am 13.02.08 - 09:43:41



Titel: aus VBA drucken
Beitrag von: oberh am 13.02.08 - 09:43:41
Guten Tag zusammen!

Ich versende aus VBA eine EMAIL mit folgendem Code, der auch funktioniert:

Code:
Public Function NotesMailNewDraft(strSendTo As Variant, strCopyTo As Variant, strSubject As Variant, strText As Variant, _
       strcc As Variant, strbcc As Variant, Mailanhang As String, boStatus As Boolean)

'   # Late-Binding
    Dim objNotesSession As Object, objNotesDB As Object, objNotesMailDoc As Object

    Dim SendItem, NCopyItem, BlindCopyToItem, i As Integer, rtitem
   
'   # Late-Binding
    Set objNotesSession = GetObject("", "Notes.Notessession")
    Set objNotesDB = objNotesSession.GetDatabase("", "")
   
    Call objNotesDB.OPENMAIL
   
    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 = strSendTo
    objNotesMailDoc.CopyTo = strCopyTo
    objNotesMailDoc.Subject = strSubject
   
    Set rtitem = objNotesMailDoc.CreateRichTextItem("Body")
    objNotesMailDoc.Body = strText

    Call objNotesMailDoc.Save(True, False)
    objNotesMailDoc.RemoveItem ("DeliveredDate")
    Call objNotesMailDoc.Save(True, False)

    '''''''''''''' Dateianhang'''''''''''''''''
    Dim xy
    Dim EmbeddedObject As Object
    Dim mailanhang2, s As Variant
   
    If Right$(Mailanhang, 1) = ";" Then
        Mailanhang = Left$(Mailanhang, Len(Mailanhang) - 1)
    End If
   
    Const cdelim$ = ";"
    Const embed_ATT = 1454

    s = Split(Mailanhang, ";")

    For xy = LBound(s) To UBound(s)
        mailanhang2 = s(xy)
        Set rtitem = objNotesMailDoc.CreateRichTextItem(mailanhang2)
        Set EmbeddedObject = rtitem.EmbedObject(embed_ATT, "", mailanhang2, mailanhang2)
    Next xy
    ''''''''''''''''''''''''''''''''''''''''''

    Call objNotesMailDoc.Save(True, False)
   
    Select Case boStatus
        Case True
            objNotesMailDoc.PostedDate = Now()
            Call objNotesMailDoc.SEND(True, False)
           
            '# Hier eventuell noch ein PDF der Mail erstellen
'####################################################################
'####################################################################
'            MailPDFerstellen objNotesDB, objNotesSession, objNotesMailDoc

'####################################################################
            objNotesMailDoc.Remove (True)
            MsgBox "Die EMail wurde gesendet!", vbInformation, "Hinweis"
        Case False
            MsgBox "Die EMail wurde erfolgreich im Ordner Entwürfe erstellt!", vbInformation, "Hinweis"
    End Select
    Call objNotesSession.Close: Set objNotesSession = Nothing
    Set rtitem = Nothing
    Set EmbeddedObject = Nothing
    Set objNotesMailDoc = Nothing
    Set SendItem = Nothing
    Set NCopyItem = Nothing
    Set BlindCopyToItem = Nothing

    Set objNotesDB = Nothing

End Function

Nun habe ich ein Problem mit dem Objektmodell.
Die .Print Methode existiert nur zum NotesUIDocument.

Mit der Zeile
Code:
'MailPDFerstellen objNotesDB, objNotesSession, objNotesMailDoc

-->
'Public Sub MailPDFerstellen(ByVal objNotesDB As Object, ByVal objNotesSession As Object, ByVal objNotesMailDoc As Object)
wollte ich eine Prozedur aufrufen, die u.a. diese Zeile aufrufen soll:
Code:
objNotesMailDoc.Print (1)

Da das Objekt die Methode nicht unterstützt, kracht es hier.

Wie muss der obige Code abgeändert werden, damit dort ein NotesUIDocument erstellt wird?

Ich bedanke mich im Voraus
Olaf


Titel: Re: aus VBA drucken
Beitrag von: ata am 13.02.08 - 11:24:33
... NotesUIDocument geht nicht per COM-Programmierung

Toni


Titel: Re: aus VBA drucken
Beitrag von: oberh am 13.02.08 - 11:31:58
Vielen Dank Toni.

Das ist zwar nicht das, was ich hören wollte ...  ;D

Dann werde ich mir wohl etwas anderes überlegen müssen.

Viele Grüße
Olaf

Mir ist da gerade noch eine Idee gekommen:
Könnte man denn von VBA aus einen Agenten mit entsprechendem Code erstellen, ihn ausführen und wieder löschen?
Geht das überhaupt, wenn man keinen Designer Client auf seinem Rechner hat?


Titel: Re: aus VBA drucken
Beitrag von: ata am 13.02.08 - 14:59:36
... ne leider auch nicht - du brauchst einen Trigger für Frontend in LotusNotes - und der lässt sich per COM nicht nachbilden...

Toni


Titel: Re: aus VBA drucken
Beitrag von: ata am 13.02.08 - 15:02:04
... du könntest per VBA aber den Inhalt in ein Word-Doc schieben, dort kannst du dann ausdrucken...

Toni


Titel: Re: aus VBA drucken
Beitrag von: oberh am 13.02.08 - 15:03:16
Hi!

Hat ich mir schon gedacht. :(

Nochmals danke.

Zitat
Dann werde ich mir wohl etwas anderes überlegen müssen.

Ups: Nachtrag: Ja, genau das hatte ich vor. Danke

Viele Grüße
Olaf


Titel: Re: aus VBA drucken
Beitrag von: ata am 13.02.08 - 15:09:39
... eine andere Alternative zum Printen fällt mir auch nicht ein...

Toni


Titel: Re: aus VBA drucken
Beitrag von: Ralf_M_Petter am 13.02.08 - 15:40:59
Warum verwendest du nicht statt Com einfach OLE, dann sollte es auch mit den Frontendklassen funktionieren?

Grüße

Ralf

P.S. Einschränkung ist halt, dass es Probleme geben kann wenn der Notesclient blockiert ist durch einen modalen Dialog z.B.



Titel: Re: aus VBA drucken
Beitrag von: oberh am 13.02.08 - 16:11:48
Hi Ralf!

Auch Dir danke.
Ich werde es einfach in einer Worddatei ablegen.

Die Dateien in der Mail werden aus Daten einer Access-DB bestückt.
Da diese Dateien und Daten aber im laufenden Betrieb ständig verändert werden können, wollten wir mit einer PDF-Datei im Moment des Versandes an einen Kostenträger diese Daten und Dateien festhalten.
Da meine Anwendung die Möglichkeit beherbergt, die Mail auch erst im Entwurf abzulegen, wird die o.g. Option auch weiterhin genutzt werden.

Tschüss
Olaf