Comment envoyer un même courrier de réponse (modèle enregistré dans Outlook) à l'expéditeur du courrier (à, cc)

StackOverflow https://stackoverflow.com/questions/8816082

Question

Qu'est-ce que j'ai besoin est exactement .. reçois continue mails de clients (clients différents) de mettre à jour leurs données d'actifs dans la base de données .. une fois processus fait .. je dois répondre (y compris cc) de leur telling mail comme « les détails d'actifs stocké dans la base de données avec succès "(am en utilisant le modèle) ... me suggérer comment le faire en utilisant VBA ..?

Option Explicit

Sous ReplyToAll publique ()

Dim oExp Comme Outlook.Explorer

'pour les messages sélectionnés dans les perspectives

Dim Comme oSM mailItem

Dim Comme mailItem ONM

On Error GoTo Err

Set oExp = Outlook.Application.ActiveExplorer

'Check if something is selected
If oExp.Selection.Count > 0 Then

    'Get the first item selected

    Set oSM = ActiveExplorer.Selection.Item(1)

        'Create a Reply template

        Set oNM = oSM.ReplyAll

        With oNM

            'Change the subject
            .Subject = "RE: " & oSM.Subject

            'Change the body
            .Body = .Body & Chr(13) & Chr(13)

        'Display the new mail before sending it
            .Display

        End With

End If

Exit Sub

Err:

MsgBox Err.Description, vbCritical

End Sub

.......................

section 3

Sous ReplyAll () Dim objOutlookObject Comme mailItem

Pour chaque objOutlookObject Dans GetCurrentOutlookItems

With objOutlookObject
.ReplyAll.Display

'code zone prob ne comprend pas le modèle enregistré dans l'emplacement c ..throws une erreur

.createitemtemplate("c:\car.jtm")

End With Prochain End Sub

GetCurrentOutlookItems de fonction () As Collection Dim objApp Comme Outlook.Application Dim objItem As Object Dim colItems As New Collection

Set objApp = CreateObject("Outlook.Application")
On Error Resume Next
Select Case TypeName(objApp.ActiveWindow)
    Case "Explorer"
        For Each objItem In objApp.ActiveExplorer.Selection
            colItems.Add objItem
        Next
    Case "Inspector"
        colItems.Add objApp.ActiveInspector.CurrentItem
    Case Else
        ' anything else will result in an error, which is
        ' why we have the error handler above
End Select

Set objApp = Nothing
Set GetCurrentOutlookItems = colItems

End Function

..........

Était-ce utile?

La solution

Je suis désolé mon commentaire était si laconique; 500 caractères ne laisse pas beaucoup de place pour une réponse complète.

Votre question est très claire donc il est susceptible d'être fermé. Certes, je ne vois pas comment on pourrait répondre. Voilà pourquoi il est important que vous essayez de résoudre votre problème et retour au besoin avec des questions spécifiques.

Ci-dessous je fournir des liens vers les messages récents que je crois vous aider à démarrer. Comme je l'ai dit dans mon commentaire, regarder à travers les messages récents. Utilisez le moteur de recherche. Il y a de très bonnes réponses ici si vous regardez pour eux.

Les deux premiers messages sont des tutoriels écrits par moi. Les premières étapes sont les mêmes, mais, parce que les questions ne sont pas tout à fait les mêmes, les étapes ultérieures sont différentes. Regardez les deux et choisir les bits pertinents pour vous. Les autres messages contiennent toutes les informations peuvent vous être utiles.

Comment importer les données de messagerie Outlook pour Excel

mise à jour feuille Excel basée sur la messagerie perspectives

quelqu'un pourrait-il Guide moi dans la création d'une macro outlook qui effectue les opérations suivantes

envoyer un e-mail à partir d'Excel 2007 vba en utilisant un ensemble des variables de modèle de perspectives

utilisant Visual Basic pour l'accès dans la boîte de réception sous-dossier

événement perspectives vba mouvement email

Nouvelle section en réponse à de nouvelles informations de questionneur

À l'exception des modifications mineures, le code dans votre question a été prise à partir du fichier aide de Microsoft pour NewMailEx Event. Ce code ne fonctionnera que si vous avez le bon type d'installation et si vous le placez dans le bon endroit:

  • " NewMailEx événement se déclenche que pour les boîtes aux lettres dans Microsoft Outlook qui fournissent une notification pour un message reçu tel que Microsoft Exchange Server. En outre, l'événement ne se déclenche que si Outlook est en cours d'exécution. Dans d'autres termes, il ne sera pas le feu pour les nouveaux éléments qui sont reçus dans le boîte de réception lorsque Outlook n'a pas été ouvert. les développeurs qui veulent accéder à ces éléments pour les clients exécutant Outlook sur un compte de courrier électronique du serveur Exchange besoin pour mettre en œuvre leur code sur le serveur Cependant, le NewMailEx événement se déclenche contre le mode Exchange mis en cache dans tous les contextes. Télécharger les éléments complets , Télécharger en-têtes et Télécharger en-têtes et puis les éléments complets . "

Avez-vous le bon type d'installation? Pouvez-vous placer votre code sur le serveur? Même si cela est la bonne approche pour la version finale de votre macro, je ne crois pas que ce soit la bonne approche pendant que vous apprenez VBA et Outlook.

Vous avez besoin de deux choses:

  1. une spécification détaillée de la macro que vous souhaitez écrire et
  2. plus de compréhension de VBA et Outlook.

Je doute que vous pouvez créer les spécifications détaillées encore parce que vous ne savez pas assez sur VBA et Outlook. Mais nous pouvons énumérer les choses que vous devez savoir:

  • Comment écrivez-vous à votre base de données à partir d'Outlook?
  • Comment identifiez-vous les articles de courrier que vous souhaitez enregistrer? Dans votre exemple, vous vérifiez pour un sujet de « Bonjour » et répondre « Salut ». Ceci est très bien pour une première expérience, mais vous devez identifier la vraie méthode. Est-ce un nouvel expéditeur? Y at-il des informations spécifiques dans le corps du message? Est-ce un être humain doivent identifier ces éléments de courrier?
  • Dans votre exemple, vous avez un dossier « personnel » sous « Boîte de réception ». Beaucoup de gens semblent avoir ce type de structure des dossiers et des exemples Microsoft ont tendance à utiliser des dossiers comme celui-ci. Non. J'ai un dossier appelé « Accueil ». En vertu de ce que je possède des dossiers pour « assurance », « Shopping », « Money ». Dans ces dossiers, j'ai pour mes différents fournisseurs. Une fois que je l'ai traité un message, je le déplacer dans le dossier approprié. Les réponses vont dans le même dossier. Ceci est mon système et cela fonctionne pour moi. Qu'est-ce que votre système va être? Est-ce que, par exemple, un seul dossier pour tous les clients ou un par client?

Ce qui précède est une liste de démarrage des questions pour votre cahier des charges, mais il est également une liste de démarrage des choses que vous devez savoir.

Peut-être vous avez un patron qui veut vous arrêter de perdre du temps et de commencer à écrire la macro, mais vous ne savez pas encore assez pour planifier la macro finale.

Démarrer avec mes tutoriels. Les trois premières étapes sont sur la structure du dossier. Ces étapes sont essentielles si vous avez le genre de structures de dossiers complexes que j'ai. Ensuite, je passe par un dossier affichant des informations sélectionnées dans chaque élément de courrier. J'ai pas où j'écris des corps de message sur le disque. Je vous suggère de passer par les deux tutoriels et essayez mon code. Pas tout sera immédiatement utile, mais il est tout de bonnes informations de fond.

Quelle est votre base de données? Est-il Access ou Excel? Il y a un peu d'aide dans mes tutoriels et dans les autres liens ci-dessus avec l'écriture d'Excel que vous pouvez adapter pour l'accès.

Je pense que ce qui précède est suffisant pour l'instant. Prenez-le lentement et il va commencer à faire sens. Je me souviens encore de la première fois que j'ai essayé d'écrire une macro Outlook afin que je comprends votre confusion. Je vous promets que ce sera clair. Bonne chance.

Nouvelle section en réponse au commentaire suivant:

  • "bonjour j'ai essayé ..Got ce que je veux .... Enlevé mon précédent a remplacé le code..and a essayé nouveau code .. Maintenant, peu d'aide nécessaire de vous .... est-il possible d'utiliser le même format comme quand on clique sur le bouton ReplyAll dans outlook .. mon code de travail ..prob fine est le format du courrier est-à-diffèrent .. "

Problème 1

.Body = .Body & Chr(13) & Chr(13)

Vous utilisez le corps du texte. Je pense que vous voulez que le corps HTML. Essayez:

.HTMLBody = .HTMLBody & Chr(13) & Chr(13)

Problème 2

Vous ne pouvez pas ajouter au corps HTML de cette façon. Le corps HTML sera:

<!doctype ...><html><head> ... </head><body> ... </body></html>

Vous devez ajouter votre texte au début du corps; qui est, juste après <body>. Si vous ajoutez simplement votre texte, vous acceptera Quelque soit le style, les marges et les couleurs de l'expéditeur a utilisé. Le code suivant ajoute un texte qui a la même dans chaque email que je l'ai essayé avec. Mon texte est dans une table avec une seule cellule. Le tableau couvre toute la largeur de la page. Le texte est bleu sur un fond blanc.

Dim InsertStg As String
Dim Inx As Long
Dim Pos As Long

    'Change the body step 1: Create the string to be inserted
    InsertStg = "<table border=0 width=""100%"" style=""Color: #0000FF""" & _
                " bgColor=#FFFFFF><tr><td><p>"
    For Inx = 1 To 10
      InsertStg = InsertStg & "Sentence " & Inx & " of first paragraph. "
    Next
    InsertStg = InsertStg & "</p><p>"
    For Inx = 1 To 10
      InsertStg = InsertStg & "Sentence " & Inx & " of second paragraph. "
    Next

    ' The following adds a signature at the bottom of the message.
    ' "font-family" gives a list of fonts to be tried.  If these are
    ' missing from your computer, use the names of fonts you do have.
    ' "serif" means that if none of the fonts exist any serif font
    ' that exists is to be used.
    InsertStg = InsertStg & "</p><p style = ""font-family: Mistral, " & _
                "Vivaldi, serif; font-size: 14px; color: " & _
                "rgb(127,0,127)"">John Smith<br>5 Acacia Avenue<br>"

    InsertStg = InsertStg & "</p></td></tr></table>"
    'Change the body step 2: Find insertion position just after <Body> element
    Pos = InStr(1, LCase(.HTMLBody), "<body")
    If Pos = 0 Then
      Call MsgBox("<Body> element not found in HTML body", vbCritical)
      Exit Sub
    End If
    Pos = InStr(Pos, .HTMLBody, ">")
    If Pos = 0 Then
      Call MsgBox("Terminating > for <Body> element not found in HTML body", vbCritical)
      Exit Sub
    End If
    'Change the body step 3: Insert my text into body
    .HTMLBody = Mid(.HTMLBody, 1, Pos) & InsertStg & Mid(.HTMLBody, Pos + 1)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top