Piloter outlook et word depuis une application; copier un content word dans un mail outlook

Soyez le premier à donner votre avis sur cette source.

Snippet vu 19 357 fois - Téléchargée 20 fois

Contenu du snippet

petit code simple qui permet de piloter outlook 2003 et word 2003. il copie le contenu d'un document word dans le corps de mail d'outlook, pret à être envoyé.

Attention, il faut mettre les référence d'outlook et de word dans le projet

Source / Exemple :


Imports Microsoft.Office.Interop
'this example need reference of microsoft word object library and outlook object library

Public Class Form1

    Private oMissing As Object = System.Reflection.Missing.Value

    Private Sub btnGenerate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGenerate.Click
        Dim strSubject As String = "subject test"
        Dim strMessage As String = "message test"
        Dim astrRecip As String = "recipientMe@mail.org"
        Dim astrAttachments As String = txtPath.Text

        Dim OutlookApp As New Outlook.Application
        Dim MyEMail As Outlook.MailItem = OutlookApp.CreateItem(Outlook.OlItemType.olMailItem)

        For Each Recipient As String In Split(astrRecip, ";") : MyEMail.Recipients.Add(Recipient) : Next
        For Each Attachment As String In Split(astrAttachments, ";") : MyEMail.Attachments.Add(Attachment) : Next

        MyEMail.Subject = strSubject
        MyEMail.HTMLBody = getWordDoc(astrAttachments)

        MyEMail.Display()
    End Sub

    Private Function getWordDoc(ByVal filename As String) As Object
        Dim wordApp As Word.Application = New Word.ApplicationClass()
        Dim wordDoc As Word._Document
        Dim content As Object = ""

        wordApp.Visible = False

        wordDoc = wordApp.Documents.Open(CType(filename, Object), oMissing, True, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing)

        wordDoc.Content.Select()
        wordDoc.Content.Copy()

        Dim objClipboard As IDataObject = Clipboard.GetDataObject()
        If objClipboard.GetDataPresent(DataFormats.Html) Then content = objClipboard.GetData(DataFormats.Html)

        wordApp.Quit(CType(False, Object), oMissing, oMissing)

        wordDoc = Nothing
        wordApp = Nothing
        Return content
    End Function
End Class

A voir également

Ajouter un commentaire

Commentaires

Messages postés
6
Date d'inscription
mardi 4 mai 2004
Statut
Membre
Dernière intervention
13 juin 2009

Bonjour ManuAntibes,

si je ne me trompe pas, la librairie en question ne se trouve pas dans le GAC

verifie la présence de la librairie avec gacutil -l
éventuellement, enregistre les composant soit à la main, soit en (re)installant les composant de programmation dotnet fournis avec le cd office

sinon, google + TYPE_E_LIBNOTREGISTERED te donne de bon résultat... esseye par exemple le premier résultat sur msdn
Messages postés
486
Date d'inscription
mardi 24 octobre 2000
Statut
Membre
Dernière intervention
23 mars 2019
3
Bonjour

J'ai un message d'erreur lorsque j'exécute le code

Voici le message:
Interception de System.InvalidCastException
Message="Impossible d'effectuer un cast d'un objet COM de type 'Microsoft.Office.Interop.Word.ApplicationClass' en type d'interface 'Microsoft.Office.Interop.Word._Application'. Cette opération a échoué, car l'appel QueryInterface sur le composant COM pour l'interface avec l'IID '{00020970-0000-0000-C000-000000000046}' a échoué en raison de l'erreur suivante : Bibliothèque non inscrite. (Exception de HRESULT : 0x8002801D (TYPE_E_LIBNOTREGISTERED))."
Source="Microsoft.Office.Interop.Word"


Quelque aurait il une idée du problème ????

Merci
Messages postés
4
Date d'inscription
lundi 27 octobre 2008
Statut
Membre
Dernière intervention
13 mai 2009

Bonjour, ce que je cherche concerne Microsoft ACCESS 2003 et doit être écrit en VBA pour être compatible avec ACCESS 2003, je ne cherche pas du VBA.Net ou autre mais du VBA tout court.
Quelqu'un peut il nous aider ?
Messages postés
6
Date d'inscription
mardi 4 mai 2004
Statut
Membre
Dernière intervention
13 juin 2009

Bonjour Viviane,

Je ne sais pas vraiment t'aider sur ce point là.

J'ai du faire des fonction beaucoup plus avancées dans outlook et dans office en général depuis ce code.

Depuis, donc, j'utilise rédemption http://www.dimastr.com/redemption/
Messages postés
38
Date d'inscription
jeudi 27 septembre 2007
Statut
Membre
Dernière intervention
25 mars 2014

Bonjour,

Merci pour ce code si précieux.
Je suis sous Outlook 2007 et le message m'arrive avec,dans le corps du message 1 ère ligne
"Version:1.0 StartHTML:0000000105 EndHTML:0000008139 StartFragment:0000002212 EndFragment:0000008099 "

auriez-vous une idée?
Afficher les 12 commentaires

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.