Autor Thema: Mit VBA Anhang in Memo einbetten - nicht Anhängen  (Gelesen 3780 mal)

Offline Matzemalzbier

  • Frischling
  • *
  • Beiträge: 3
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

Offline TRO

  • Senior Mitglied
  • ****
  • Beiträge: 296
Re: Mit VBA Anhang in Memo einbetten - nicht Anhängen
« Antwort #1 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

Offline Matzemalzbier

  • Frischling
  • *
  • Beiträge: 3
Re: Mit VBA Anhang in Memo einbetten - nicht Anhängen
« Antwort #2 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?





Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Mit VBA Anhang in Memo einbetten - nicht Anhängen
« Antwort #3 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.
« Letzte Änderung: 24.10.15 - 17:05:08 von Peter Klett »

Offline Matzemalzbier

  • Frischling
  • *
  • Beiträge: 3
Gelöst - Re: Mit VBA Anhang in Memo einbetten - nicht Anhängen
« Antwort #4 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

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz