Das Notes Forum

Lotus Notes / Domino 10 => ND10: Entwicklung => Thema gestartet von: Hias90 am 14.12.21 - 10:19:17

Titel: Bild aus Excel oder Dateipfad in "Body" einfügen
Beitrag von: Hias90 am 14.12.21 - 10:19:17
Hallo zusammen,

bin neu hier und auch relativ neu in der Programmierung mit und um Notes.

Hoffe hier kann mir jemand helfen!

Ich habe mittlerweile folgenden Code gefunden / geschrieben / angepasst:

Code
Public Sub btnEntwurfTeam1A_click()
  EmailTeam1A = Sheets(Sh3).Range(CellEmailTeam1A)
  NameTeam1A = Sheets(Sh3).Range(CellNameTeam1A)
  
  txtEmail = EmailTeam1A
  txtSubject = "Präsentation KVP-Ziele: " & NameTeam1A
  txtBody = Sheets(Sh1).Range("B6:C20").Copy
  Save_Entwurf
  
  MsgBoxEntwurf1Sekunden

End Sub



Public Function Save_Entwurf()
  Set session = CreateObject("Notes.NotesSession")
  Set mailDB = session.currentdatabase
  Set MailDoc = mailDB.CREATEDOCUMENT
  Dim AttachMe As Object
  
  attachment = "<Pfad zur Datei>"
  
'  MailDoc.PostedDate = ""
  MailDoc.Form = "Memo"
  MailDoc.SendTo = Split(txtEmail, ";")
  MailDoc.CopyTo = txtEmail2
'  MailDoc.BlindCopyTo = bccRecipient
  MailDoc.Subject = txtSubject
  MailDoc.Body = txtBody
   
  MailDoc.Save True, False
                          
  Set mailDB = Nothing
  Set MailDoc = Nothing
  Set session = Nothing
End Function


Dies macht alles was ich will, nur ich verzweifle daran, das im Body mein Text plus ein Screenshot meiner Tabelle (Bereich der Tabelle: B6:C20) vorhanden ist.

Wäre auch soweit, denn Bereich der Tabelle als .jpg in dem gleichen Ordner zu speichern um dieses dann einzufügen, falls es leichter wäre.

Mir fehlen nur die richtigen Befehle, bei VBA kann ich im Object Katalog oder Internet nach denn Befehlszeilen nach schauen.

Bei Notes habe ich noch nichts in der richtig gefunden.

Ich hoffe Ihr könnt mir helfen, will das schon gerne hinbekommen und somit wieder etwas dazu lernen.


Mit Freundlichen Grüßen

Matthias
Titel: Re: Bild aus Excel oder Dateipfad in "Body" einfügen
Beitrag von: jBubbleBoy am 14.12.21 - 11:48:31
Dies macht alles was ich will, nur ich verzweifle daran, das im Body mein Text plus ein Screenshot meiner Tabelle (Bereich der Tabelle: B6:C20) vorhanden ist.

Hier frage ich mich: Passt das jetzt oder nicht?
Titel: Re: Bild aus Excel oder Dateipfad in "Body" einfügen
Beitrag von: Tode am 14.12.21 - 13:49:48
Du hast eines der schwierigsten Probleme überhaupt in LotusScript ausgesucht: Das importieren eines Bildes in ein Richtextitem. Das Anhängen eines Bildes als Attachment ist ein Zweizeiler... Für das Einfügen eines Bildes in ein RichtextItem brauchst Du entweder externe Kaufsoftware, oder Du muss mit Tricks arbeiten wie XML- Manipulation, Erstellen von Multipart Mime Messages oder Missbrauchen der Frontend- Klassen.

Jeder dieser Hacks ist leider nicht in wenigen Zeilen hier erklärt...

Der "einfache" Weg, das JPG einfach als Attachment einzufügen ginge so:

Ersetze die Zeile "MailDoc.Body = txtBody" durch:

Code
Dim body as NotesRichtextItem
Set body = New NotesRichtextItem( MailDoc, "Body" )
Call body.AppendText( txtBody )
Call body.AddNewLine( 2 )
Call body.EmbedObject( EMBED_ATTACHMENT, "", "PfadZuDeinem\bild.jpg" )
Titel: Re: Bild aus Excel oder Dateipfad in "Body" einfügen
Beitrag von: Hias90 am 14.12.21 - 15:09:38

Hallo,

@jBubbleBoy:  Entschuldige, das mit meinem Text ging nur eben das Bild ist noch mein Problem.

@Tode:  Danke für deine Antwort, nur leider ist ein Anhang nichts für meinen Fall. Zur Erklärung, ich habe eine Tabelle mit Teamnamen und Namen der Mitglieder.
             Diese Tabelle, wollte ich als Bild oder Tabelle einfügen und dachte als Bild müsste leichter gehen.
             Vor allem ein händisches Copy -> Paste funktioniert aber ich finde nichts, dies über VBA hinzubekommen.
             Da ich beim Erstellen eines Kalendereintrages schon gescheitert bin und mich dann für die umständliche Lösung entschieden habe eine Email als Entwurf
             mit allen Daten zu erstellen, diesen dann in Notes per rechtsklick -> kopieren in einen Kalendereintrag umwandle, dachte ich vll gibt es auch eine einfache
             Methode eben dieses "Copy -> Paste" zu programmieren. Hab auch schon dran gedacht die Tabelle als Bild zu speichern und dann einfügen, aber finde auch
             hier keinen Befehl wie ich das gespeicherte Bild (temp.jpg) da rein bekomme.
Titel: Re: Bild aus Excel oder Dateipfad in "Body" einfügen
Beitrag von: Tode am 14.12.21 - 15:34:49
Dann schlage ich Dir fürs nächste Mal vor: Frage was Du erreichen WILLST, und nicht, welchen Workaround Du Dir dafür ausgedacht hast... Man kann im NotesRichtextItem nämlich mit LotusScript eine Tabelle über Set rtTable = body.AppendTable( ... ) erstellen und diese dann über das NotesRichtextTable- Objekt mit Daten befüllen... das geht wesentlich einfacher, als ein Bild der Tabelle einzufügen oder mit der Zwischenablage zu hantieren. Zwischenablage ist nämlich Frontend... Dein Code läuft aber im Backend... das geht also nur mit einigen Hacks...
Titel: Re: Bild aus Excel oder Dateipfad in "Body" einfügen
Beitrag von: jBubbleBoy am 14.12.21 - 15:36:53
@Mathias suchst Du das etwa?
Bild kopieren in Excel:  https://docs.microsoft.com/en-us/office/vba/api/excel.range.copypicture
Bild einfügen in Notes: https://help.hcltechsw.com/dom_designer/9.0.1/appdev/H_PASTE_METHOD.html
Titel: Re: Bild aus Excel oder Dateipfad in "Body" einfügen
Beitrag von: Tode am 14.12.21 - 15:42:27
@Erik: Wenn Du ihm jetzt noch erklärst, wie er aus VBA von seinem Backend NotesDocument auf ein Frontend- NotesUIDocument kommt, um die Methode aufzurufen, dann ist ja alles geklärt...
Titel: Re: Bild aus Excel oder Dateipfad in "Body" einfügen
Beitrag von: jBubbleBoy am 14.12.21 - 15:46:03
Ich habe mich auf diese Aussage bezogen:
Vor allem ein händisches Copy -> Paste funktioniert aber ich finde nichts, dies über VBA hinzubekommen.
Titel: Re: Bild aus Excel oder Dateipfad in "Body" einfügen
Beitrag von: jBubbleBoy am 14.12.21 - 15:52:28
Ach ja, in Excel kommt man an das Notes-Frontend so heran:
Code
   Dim ws As Object
   Set ws = CreateObject("Notes.NOTESUIWORKSPACE")

Mal so als Startgeber :)