Aide sur l'automation lotus notes sous vb


Description

Bonjour à tous

Voici une aide vraiment bien détaillée pour tous ceux qui veulent utiliser Lotus Notes dans leur application VB et qui n'y arrivent pas...ça arrive des fois !!!!;)

Je vous met le lien vers cette page car le document (900ko en pdf) est trop gros pour aller sur ce site

ftp://ftp.boulder.ibm.com/software/lotus/pub/lotusweb/ssdev/lsvbrb.pdf

Bon code à tous

SeHN

Source / Exemple :


Option Explicit
'---------- API -----------
'pour faire passer au premier plan
Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long
'pour ouvrir la fenetre
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
'pour verifier si la Lotus est ouvert
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    
Dim sSrvr As String  'the mail server for the current user
Dim MailDbName As String 'THe current users notes mail database name
Dim UserName As String 'The current users notes name

Dim retval As Variant  'Holds return value for functions handle

'---------------- fonction ouverture de session Notes -----------
Function CreateNotesSession() As Boolean
    Const notesclass$ = "NOTES"
    Const SW_SHOWMAXIMIZED = 3 'plein ecran
    Const SW_SHOWMMINIZED = 2 'reduire
    Const SW_SHOWWINDOW = 1 'fenetre
    Const SW_SHOW = 5
    
    Dim Lotus_Session As Object
    Dim rc&
    Dim lotusWindow&
    
    lotusWindow = FindWindow(notesclass, vbNullString)
 
    Set Lotus_Session = CreateObject("Notes.NotesSession")
    sSrvr = Lotus_Session.GETENVIRONMENTSTRING("MailServer", True)
    MailDbName = Lotus_Session.GETENVIRONMENTSTRING("MailFile", True)
    UserName = Lotus_Session.UserName
    
    DoEvents
    'Ouverture de Lotus Notes
    retval = Shell("C:\APPLI\Notes5\notes.exe =h:\notes\notes.ini", vbMaximizedFocus)
    
    'verifier que Lotus est bien ouvert (recupere le handle)
    lotusWindow = FindWindow(notesclass, vbNullString)
    If lotusWindow <> 0 Then
        rc = ShowWindow(lotusWindow, SW_SHOW)
        rc = SetForegroundWindow(lotusWindow)
        CreateNotesSession = True
    Else
         CreateNotesSession = False
    End If
End Function
Sub CreateMailandAttachFileAdr(Optional IsSubject As String = "", Optional SendToAdr As String, Optional CCToAdr As String, Optional BCCToAdr As String = "", Optional Attach1 As String = "", Optional Attach2 As String = "", Optional body As String = "")
Const EMBED_ATTACHMENT As Integer = 1454
Const EMBED_OBJECT As Integer = 1453
Const EMBED_OBJECTLINK As Integer = 1452

Dim s As Object ' use back end classes to obtain mail database name
Dim db As Object '
Dim doc As Object ' front end document
Dim beDoc As Object ' back end document
Dim workspace As Object ' use front end classes to display to user
Dim bodypart As Object '
Dim bodyAtt As Object '
Dim lbsession As Boolean

lbsession = CreateNotesSession

If lbsession Then
    'cree la session Lotus Notes
    Set s = CreateObject("Notes.Notessession")
    'se connecte a sa database
    Set db = s.getDatabase(sSrvr, MailDbName)
    If db.ISOPEN = True Then
        'database deja ouvert
    Else
        Call db.Openmail
    End If
    'cree un document memo
    Set beDoc = db.CreateDocument
    beDoc.Form = "Memo"
    
    'construction du mail
    Set bodypart = beDoc.CREATERICHTEXTITEM("Body")
    'beDoc.From = "Moi" 'inutile
    beDoc.SendTo = SendToAdr
    beDoc.CopyTo = CCToAdr
    beDoc.BlindCopyTo = BCCToAdr
    beDoc.Subject = IsSubject
    '-----------------------------------------
    'Remarque si destinataire multiple il suffie de mettre un tableau d'e-mail dans SendTo (CopyTo,BlindCopyTo)
    'exemple :
    'Dim recip(25) as variant
    'recip(0) = "emailaddress1"
    'recip(1) = "emailaddress2" e.t.c
    'beDoc.sendto = recip
    '----------------------------------------
    ' documents joint 1
    If Len(Attach1) > 0 Then
        If Len(Dir(Attach1)) > 0 Then
           Set bodyAtt = bodypart.EmbedObject(EMBED_ATTACHMENT, "", Attach1, Dir(Attach1))
        End If
    End If

    ' documents joint 2
    If Len(Attach2) > 0 Then
        If Len(Dir(Attach2)) > 0 Then
            Call bodyAtt.EmbedObject(EMBED_ATTACHMENT, "", Attach2, Dir(Attach2))
        End If
    End If
        
    'Affichage du mail dans Lotus Notes
    Set workspace = CreateObject("Notes.NotesUIWorkspace")
    Call workspace.EditDocument(True, beDoc).FieldSetText("Body", body)

    Set s = Nothing
Else
    MsgBox "Votre Lotus Notes est fermé !"
End If
End Sub
Private Sub envoyer_Click()
    CreateMailandAttachFileAdr Msujet.Text, Mto.Text, Mcc.Text, Mbcc.Text, MdocJoint1.Text, MdocJoint2.Text, Mbody.Text
End Sub

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.