Das Notes Forum

Lotus Notes / Domino Sonstiges => OLE/COM-Programmierung => Thema gestartet von: wziffels am 16.02.15 - 13:00:03



Titel: VBA: Anwendungslink erstellen
Beitrag von: wziffels am 16.02.15 - 13:00:03
Moin Moin,

Wie ich Mails per VBA versende weiß ich aber gibt es auch eine Möglichkeit in einer automatisiert erstellten Notesmail einen Anwendungslink zu einer Datenbank (blaues Buchsymbol) zu erstellen?

MfG
WZ


Titel: Re: VBA: Anwendungslink erstellen
Beitrag von: Mitch am 16.02.15 - 13:16:43
Moinsen,

ja.

Gruß,

Mitch

(P.S.: "AppendDocLink" im NotesRichtextItem ist dein Ansatzpunkt  :D)


Titel: Re: VBA: Anwendungslink erstellen
Beitrag von: wziffels am 16.02.15 - 15:56:57
(P.S.: "AppendDocLink" im NotesRichtextItem ist dein Ansatzpunkt  :D)

Danke für die Info Mitch. Kannst du das etwas genauer ausführen?
In den Dokumenteneigenschafften wird bei mir zwar ein Feld mit dem bei CREATERICHTEXTITEM angegebenen Namen angezeigt aber der DocLink den ich mit APPENDDOCLINK erstelle wird im Body nicht angezeigt.

Gruß
Wolfgang


Titel: Re:
Beitrag von: Mitch am 16.02.15 - 16:30:14
Der Doklink muss in den Body.

Wenn es das nicht ist, müsstest du mal den Code posten.

Gruß,

Mitch


Titel: Re: VBA: Anwendungslink erstellen
Beitrag von: wziffels am 17.02.15 - 10:51:17
Hallo Mitch,

Danke für deine Hilfe.
Dies ist mein Code:

Code:
Public Sub SendNotesMail(Subject As String, Recipient As String, BodyText As String, SaveIt As Boolean)
     Dim Maildb As Object 'The mail database
     Dim UserName As String 'The current users notes name
     Dim MailDbName As String 'THe current users notes mail database name
     Dim MailDoc As Object 'The mail document itself
     Dim Session As Object 'The notes session
     Dim EmbedObj As Object 'The embedded object (Attachment)
     Dim rt As Object
     
     'Start a session to notes
     Set Session = CreateObject("Notes.NotesSession")
     
     UserName = Session.UserName
     
     'Open the mail database in notes
     Set Maildb = Session.GETDATABASE("Domino01", "wziffels.nsf")
     If Maildb.IsOpen = True Then
      Else
          Maildb.OPENMAIL
      End If
     
     'Set up the new mail document
     Set MailDoc = Maildb.CREATEDOCUMENT
     MailDoc.Form = "Memo"
     MailDoc.sendto = Recipient
     MailDoc.Subject = Subject
     MailDoc.Body = BodyText
     
     Set rt = MailDoc.CREATERICHTEXTITEM("TestDocLink")
    rt.APPENDTEXT ("Click here: ")
    rt.APPENDDOCLINK Maildb, Maildb.Title
     
     MailDoc.SAVEMESSAGEONSEND = SaveIt
     
     'Send the document
     MailDoc.PostedDate = Now() 'Gets the mail to appear in the sent items folder
     MailDoc.SEND 0, Recipient
     
     'Clean Up
     Set Maildb = Nothing
     Set MailDoc = Nothing
     Set Session = Nothing
     Set EmbedObj = Nothing
 End Sub
 
 Function test()
     SendNotesMail "Testmail VBA", "wziffels", "Nur ein Text", True
 End Function


Titel: Re: VBA: Anwendungslink erstellen
Beitrag von: TRO am 17.02.15 - 11:01:44
wie schon Mitch schrieb: der DocLink muss in den Body!

Set rt = MailDoc.CREATERICHTEXTITEM("Body")


hth

Thomas


Titel: Re: VBA: Anwendungslink erstellen
Beitrag von: wziffels am 17.02.15 - 11:27:44
Dann bekomme ich die folgende Fehlermeldung:

Objektvariable oder With-Blockvariable nicht festgelegt  ???


Titel: Re: VBA: Anwendungslink erstellen
Beitrag von: wziffels am 17.02.15 - 11:31:28
Das lag wohl daran dass ich vorher dem Body schon normalen Text zugewiesen habe.

Kommentiere ich MailDoc.Body = BodyText aus dann steht da zumindest schonmal Click here: aber der Anwendungslink fehlt trotzdem.  ???


Titel: Re: VBA: Anwendungslink erstellen
Beitrag von: Tode am 17.02.15 - 11:32:43
Das kollidiert auch mit dieser Zeile:
Code:
   MailDoc.Body = BodyText
mit der Du das Item "Body" als NotesItem und nicht als "NotesRichtextItem" anlegst.

So wäre es richtig:
Code:
Set rt = MailDoc.CREATERICHTEXTITEM("Body")
Call rt.AppendText( BodyText )
Call rt.AddNewline(1)
Call rt.APPENDTEXT ("Click here: ")
Call rt.APPENDDOCLINK( Maildb, Maildb.Title )


Titel: Re: VBA: Anwendungslink erstellen
Beitrag von: wziffels am 17.02.15 - 11:52:45
Allen Beteiligten einen herzlichen Dank für eure Unterstützung.

Der Fehler lag am Ende noch daran dass der laut IBM-Dokumentation optionale Parameter HotSpotText mit angegeben werden MUSS.

Dokumentation:
Code:
Call  notesRichTextItem .AppendDocLink(  linkTo ,  comment$ [, HotSpotText$ ] )


Mein funktionierender Code:
Code:
rt.APPENDDOCLINK Maildb, Maildb.Title, "Link zur Datenbank"

 :D