Das Notes Forum

Domino 9 und frühere Versionen => ND8: Administration & Userprobleme => Thema gestartet von: Matzemalzbier am 24.10.15 - 11:29:27

Titel: Mit VBA Anhang in Memo einbetten - nicht Anhängen
Beitrag von: Matzemalzbier am 24.10.15 - 11:29:27
Liebes Forum

Mittels VBA wird eine Excel Arbeitsmappe als PDF Konvertiert und als Anhang an Lotus Notes als neues Memo übergeben.
Nun besteht das Problem in der Art wie das Dokument in Notes Angehängt/Eingebettet wird.

Mein Wunsch ist, das das Dokument eingebettet wird – Also so, als würde man ein Dokument mittels Drag&Drop „anhängen“
Die Methode „embedobject“ funktioniert leider nur in der Form das das Dokument als Anhang eingefügt wird.

Hier ein Auszug aus VBA:

    Case "Email-PDF"
        'Erzeugt ein PDF Dokument welches nur den Druckbereich enthält
        DateinameOhneEndung = Strings.Left(Mappe, Strings.Len(Mappe) - 5)
        Workbooks(Mappe).ExportAsFixedFormat Type:=xlTypePDF, Filename:="H:\" & DateinameOhneEndung & ".pdf", Quality:=xlQualityStandard, IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish:=False
     
        'Das PDF-Dokument wird an Lotus Notes übergeben. Inkl. Zieladresse, Betreff, Body und Anhang
        Dim UserName As String
        Dim MailDbName As String
        Dim Recipient As Variant
        Dim Attachment1 As String
        Dim Maildb As Object
        Dim MailDoc As Object
        Dim AttachME As Object
        Dim Session As Object
        Dim EmbedObj1 As Object
       
        With Application
            'Öffnet ggf Notes und definiert die Variablen
            Set Session = CreateObject("Notes.NotesSession")
            UserName = Session.UserName
            MailDbName = Workbooks("Einsatzplanfunktionen.xlam").Sheets("Einstellungen").Range("F12").Text
            Set Maildb = Session.GetDatabase("", MailDbName)
            If Maildb.IsOpen = True Then
            Else
                Maildb.OPENMAIL
            End If

            'Erstellt ein neues Email-Dokument
            Set MailDoc = Maildb.CREATEDOCUMENT
             
            'Übergibt Zieladresse und Betreff
            Recipient = Verteilerliste.Cells(ActiveCell.Row, 10).Text
            MailDoc.SendTo = Recipient
            Subject = DateinameOhneEndung
            MailDoc.Subject = Subject
                         
            'Fügt Dateianhang hinzu
            Attachment1 = "H:\" & DateinameOhneEndung & ".pdf"
            Set AttachME = MailDoc.CREATERICHTEXTITEM("attachment1")
            Set EmbedObj1 = AttachME.embedobject(1454, "attachment1", Attachment1, "")

            'Zur weiteren Bearbeitung der Email wird diese nicht versendet und hiemit sichtbar gemacht
            Set workspace = CreateObject("Notes.NotesUIWorkspace")
            Call workspace.EDITDOCUMENT(True, MailDoc).GOTOFIELD("Body")
           
            'Wechselt zu Lotus Notes
            AppActivate "Lotus Notes"
           
            'Löscht die Erstellte Anhang-Datei und entleert die Variablen
            Kill Attachment1
            Set Maildb = Nothing
            Set MailDoc = Nothing
            Set AttachME = Nothing
            Set Session = Nothing
            Set EmbedObj1 = Nothing

    Case Else

 Mit der Medthode embedobject(1453... hatte ich auch schon versuche unternommen - leider Erfolglos
Titel: Re: Mit VBA Anhang in Memo einbetten - nicht Anhängen
Beitrag von: TRO am 24.10.15 - 12:40:57
Was genau beabsichtigst Du? Möchtest Du ein Attachment oder ein Object in das RichTextItem einfügen?

Zitat
Mit der Medthode embedobject(1453... hatte ich auch schon versuche unternommen - leider Erfolglos

Wenn Du ein Object einbetten möchtest, dann wäre 1453 (EMBED_OBJECT) genau die richtige Methode
Mit welchen Parametern genau hast Du das dann aufgerufen.

Wenn Du allerdings ein Attachment einfügen möchtest, dann ist 1454 (EMBED_ATTACHMENT) der richtige Type-Parameter. Bei 1454 muss aber der Class-Parameter (bei Dir >"attachment1"< ) leer sein.

hth

Thomas
Titel: Re: Mit VBA Anhang in Memo einbetten - nicht Anhängen
Beitrag von: Matzemalzbier am 24.10.15 - 16:14:08
Hallo Thomas.

Ich möchte gerne ein eingebettetes Dokument. Also verwende ich...

Set EmbedObj1 = AttachME.embedobject(1453, ....

Nun habe ich aus der Notes Hilfe, die diese Methode beschreibt, herausgelesen,
das die Methode vier Parameter zugewiesen bekommen kann.
type%, class$, source$, [ name$ ]   die letzte ist Optional.

Dann sollte der Code doch so aussehen...
Set EmbedObj1 = AttachME.embedobject(1453, "", Attachment1, "")

Laut der Eklärung:
Zitat Anfang
source$
    String.
            If you are using EMBED_OBJECT and want to create an embedded object from a file, use this parameter to specify the name of the file, and specify an empty string ("") for class$.
Zitat Ende

Leider wird im Memo keine Datei eingebettet wenn ich das mit Type 1453 mache.
Wo liegt der Fehler?
Die Hilfe beschreibt die Methode aus Lotus 7 wir verwenden 8.5 - Sollte doch aber gleich geblieben sein oder?




Titel: Re: Mit VBA Anhang in Memo einbetten - nicht Anhängen
Beitrag von: Peter Klett am 24.10.15 - 16:43:58
Dein Fehler ist hier:

Set AttachME = MailDoc.CREATERICHTEXTITEM("attachment1")

Du erzeugst ein RichtextItem "attachment1", das nicht in der Maske "Memo" enthalten ist. Notes erkennt den Dateianhang trotzdem und zeigt ihn dann am Ende des Dokumentes an.

Du möchtest aber, dass der Anhang in das Feld eingefügt wird, in den man auch den Text der Mails schreibt. Dieses Feld in der Maske "Memo" heißt "Body", folglich musst Du den Anhang auch in das Item Body setzen.

Schreibe anstatt der o.g. Zeile

Set AttachME = MailDoc.CREATERICHTEXTITEM("Body")

EDIT: Übrigens, das, was Du willst, ist Anhängen, Einbetten ist etwas anderes. Beim Einbetten wird z.B. ein Bereich aus Excel in ein Notesdokument so eingebettet, dass in dem Dokument Excel läuft, so dass man direkt im geöffneten Dokument die Tabelle ausfüllen kann.

Set EmbedObj1 = AttachME.embedobject(1454, "", Attachment1, "") wäre also der richtige Code

EDIT2: Du hättest das auch in der Hilfe von Notes 4 nachschauen können, da war das auch schon so ;). Das ist ein riesengroßer Vorteil von Notes, dass dort nicht von Version zu Version die Befehle um- oder weggeworfen werden.
Titel: Gelöst - Re: Mit VBA Anhang in Memo einbetten - nicht Anhängen
Beitrag von: Matzemalzbier am 26.10.15 - 10:06:09
Moin Peter.

Mit
  Set AttachME = MailDoc.CREATERICHTEXTITEM("Body")
  Set EmbedObj1 = AttachME.embedobject(1454, "Body", Attachment1, "")
funktioniert es jetzt wie gewünscht!


Herzlichen Dank