So senden Sie die gleiche Antwortpost (Vorlage in Outlook gespeichert) an den Mail -Absender (an CC)

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

Frage

Was ich genau brauche, ist. Ich empfangen Sie fort, E -Mails vom Kunden (verschiedene Kunden) zu erhalten, um ihre Anlagendetails in der Datenbank zu aktualisieren. Sobald ich fertig bin. Datenbank "(verwende Vorlage) ... Schlagen Sie mir vor, wie es das mache, indem ich VBA verwendete.

Option explizit

Public sub ReplyToAll ()

Dim OEXP als Outlook.explorer

'Für ausgewählte Mails in Outlook

Dim OSM als MailItem

Dimm onm als MailItem

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

Irren:

MsgBox Err.Description, vbCritical

End Sub

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

Sektion 3

Sub ReplyAll () Dim OBJOutLookObject als MailItem

Für jedes ObjoutLookObject in GetCurrentoutLookitems

With objOutlookObject
.ReplyAll.Display

'Prob -Vorwahl enthält nicht die Vorlage, die in der Position C gespeichert ist

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

Ende mit dem nächsten Ende Sub

Funktion getCurrentoutLookitems () als Sammlung dimer objapp als outlook.application Dim Objitem als Objekt Dim Colitems als neue Sammlung

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

Endfunktion

..........

War es hilfreich?

Lösung

Es tut mir leid, dass mein Kommentar so knapp war; 500 Zeichen hinterlassen nicht viel Platz für eine vollständige Antwort.

Ihre Frage ist sehr unklar, daher ist es wahrscheinlich geschlossen. Sicher sehe ich nicht, wie jemand es beantworten könnte. Aus diesem Grund ist es wichtig, dass Sie versuchen, Ihr eigenes Problem zu lösen und nach Bedarf mit bestimmten Fragen zurückzukehren.

Im Folgenden gebe ich Links zu aktuellen Beiträgen, von denen ich glaube, dass sie Ihnen helfen werden, loszulegen. Wie ich in meinem Kommentar sagte, schauen Sie sich die letzten Beiträge durch. Verwenden Sie die Sucheinrichtung. Es gibt hier einige sehr gute Antworten, wenn Sie nach ihnen suchen.

Die ersten beiden Beiträge sind Tutorials, die von mir geschrieben wurden. Die frühen Schritte sind gleich, aber da die Fragen nicht ganz gleich waren, sind spätere Schritte unterschiedlich. Schauen Sie sich beide an und wählen Sie die für Sie relevanten Bits aus. Die anderen Beiträge enthalten alle Informationen, die Sie möglicherweise hilfreich finden.

So importieren Sie die Outlook -Mail -Daten in Excel

Aktualisieren Sie das Excel -Blatt basierend auf Outlook Mail

Könnte mich jemand bei der Erstellung eines Outlook -Makros führen, das Folgendes ausführt

Senden Sie eine E -Mail von Excel 2007 VBA mithilfe einer Outlook -Vorlagen -Set -Variablen

Verwenden von Visual Basic, um im Posteingang auf Unterordner zuzugreifen

VBA Outlook Event Moving E -Mail

Neuer Abschnitt als Antwort auf neue Informationen vom Fragesteller

Mit Ausnahme kleiner NewMailEx Event. Dieser Code funktioniert nur, wenn Sie die richtige Installationsart haben und ihn an der richtigen Stelle platzieren:

  • "Das Newmailex Das Ereignis wird nur für Mailboxen in Microsoft Outlook abgefeuert, die eine Benachrichtigung für empfangene Nachricht wie Microsoft Exchange Server enthält. Außerdem wird das Ereignis nur dann abgefeuert, wenn Outlook ausgeführt wird. Mit anderen Worten, es wird nicht für die neuen Gegenstände abgefeuert, die in der empfangen werden Posteingang Wenn Outlook nicht geöffnet war. Entwickler, die auf diese Elemente zugreifen möchten, für Kunden, die Outlook auf einem E-Mail-Konto für Exchange-Server ausführen, müssen ihren Code auf dem Server implementieren. Allerdings die Newmailex Das Ereignis wird in allen Einstellungen gegen den zwischengespeicherten Austauschmodus abgefeuert: Laden Sie die vollständigen Artikel herunter, Download Header, und Laden Sie Header und dann vollständige Artikel herunter."

Haben Sie die richtige Installationsart? Können Sie Ihren Code auf dem Server platzieren? Auch wenn dies der richtige Ansatz für die endgültige Version Ihres Makros ist, glaube ich nicht, dass dies der richtige Ansatz ist, wenn Sie VBA und Outlook lernen.

Sie brauchen zwei Dinge:

  1. Eine detaillierte Spezifikation des Makros, das Sie schreiben möchten und
  2. Mehr Verständnis von VBA und Outlook.

Ich bezweifle, dass Sie die detaillierte Spezifikation erstellen können, denn Sie wissen nicht genug über VBA und Outlook. Aber wir können Dinge auflisten, die Sie wissen müssen:

  • Wie schreiben Sie in Ihre Datenbank aus Outlook?
  • Wie identifizieren Sie die E -Mail -Elemente, die Sie aufzeichnen möchten? In Ihrem Beispiel suchen Sie nach einem Thema "Hallo" und antworten "Hallo". Dies ist in Ordnung für ein erstes Experiment, aber Sie müssen die eigentliche Methode identifizieren. Ist es ein neuer Absender? Gibt es spezielle Informationen im Körper der Nachricht? Muss ein Mensch solche Mailelemente identifizieren?
  • In Ihrem Beispiel haben Sie einen Ordner "persönlich" unter "Posteingang". Viele Menschen scheinen diese Art von Ordnerstruktur zu haben, und Microsoft -Beispiele verwenden in der Regel Ordner wie diese. Ich nicht. Ich habe einen Ordner namens "! Home". Unter diesem habe ich Ordner für "Versicherung", "Einkaufen", "Geld". Unter diesen habe ich Ordner für meine verschiedenen Lieferanten. Sobald ich mich mit einer Nachricht befasst habe, verschiebe ich sie in den entsprechenden Ordner. Antworten gehen in denselben Ordner. Dies ist mein System und es funktioniert für mich. Was wird Ihr System sein? Wird es zum Beispiel einen einzelnen Ordner für alle Kunden oder einen pro Kunden geben?

Das obige ist eine Starterliste von Fragen für Ihre Spezifikation, aber es ist auch eine Starterliste der Dinge, die Sie wissen müssen.

Vielleicht haben Sie einen Chef, der möchte, dass Sie aufhören, Zeit zu verschwenden und das Makro zu schreiben, aber Sie wissen noch nicht genug, um das endgültige Makro zu planen.

Beginnen Sie mit meinen Tutorials. In den ersten drei Schritten geht es um die Ordnerstruktur. Diese Schritte sind unerlässlich, wenn Sie die Art von komplexen Ordnerstrukturen haben, die ich habe. Als nächstes gehe ich in einen Ordner aus, in dem ausgewählte Informationen aus jedem Mailelement angezeigt werden. Ich habe Schritte, in denen ich Nachrichtenkörper für Disc schreibe. Ich schlage vor, Sie durchgehen beide Tutorials und probieren meinen Code aus. Nicht alles wird sofort nützlich sein, aber es sind alles gute Hintergrundinformationen.

Was ist Ihre Datenbank? Ist es Zugang oder Excel? Es gibt einige Hilfe in meinen Tutorials und in den anderen Links oben mit Schreiben an Excel, die Sie für den Zugriff anpassen können.

Ich denke, das Obige ist vorerst genug. Nehmen Sie es langsam und es wird anfangen, Sinn zu machen. Ich erinnere mich noch an das erste Mal, als ich versuchte, ein Outlook -Makro zu schreiben, damit ich Ihre Verwirrung verstehe. Ich verspreche, dass es klar wird. Viel Glück.

Neuer Abschnitt als Antwort auf den folgenden Kommentar:

  • "Hallo, ich habe es versucht ... habe ich, was ich will ... meinen vorherigen Code entfernt habe ... und versuchte den neuen Code zu ersetzen. Jetzt benötigt Sie wenig Hilfe von Ihnen .... Gibt es eine Möglichkeit, das gleiche Format zu verwenden wie wann wir Klicken Sie in Outlook auf die Schaltfläche Replyall. Mein Code funktioniert einwandfrei. Prob ist Format der Mail ist unterschiedlich .. "

Problem 1

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

Sie verwenden den Textkörper. Ich denke du willst den HTML -Körper. Versuchen:

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

Problem 2

Auf diese Weise können Sie den HTML -Körper nicht hinzufügen. Der HTML -Körper wird:

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

Sie müssen Ihren Text zum Beginn des Körpers hinzufügen. Das heißt, kurz danach <body>. Wenn Sie Ihren Text nur hinzufügen, werden Sie den Stil, die Ränder und Farben, die der Absender verwendet hat, annehmen. Der folgende Code fügt einen Text hinzu, der in jeder E -Mail aussieht, mit der ich ihn ausprobiert habe. Mein Text befindet sich in einer Tabelle mit einer einzelnen Zelle. Die Tabelle deckt die volle Breite der Seite ab. Der Text ist blau auf weißem Hintergrund.

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)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top