Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA für alle markierten Mails ausführen (Outlook)

VBA für alle markierten Mails ausführen (Outlook)
21.03.2014 15:03:22
Thomas
Hello Ihr lieben Profis,
ich benötige mal wieder ein klein wenig Hilfe. Ich möchte in Outlook 2010 allen markierten E-Mails eine individualisierte Antwort per VBA Script zukommen lassen. Dabei soll in jeder Mail aus dem Absenderfeld der Nachname ausgelesen und zum Anfang ausgewählt werden ob der Absender Mann oder Frau ist. Das klappt für eine Mail ganz gut, nur für mehrere markierte weiß ich leider nicht wie das übergeben werden soll und wie das Datum des E-Maileingangs im Text genutzt werden kann. Die von mir definierte Variable "Datum" geht leider nicht. Hier mal mein Code soweit:
Sub InsertNameInReply()
Dim Msg As Outlook.MailItem
Dim MsgReply As Outlook.MailItem
Dim strGreetName As String
Dim geschlecht As String
Dim lGreetType As Long
Dim Datum As String
'set reference to open/selected mail item
On Error Resume Next
Select Case TypeName(Application.ActiveWindow)
Case "Explorer"
Set Msg = ActiveExplorer.Selection.Item(1)
Case "Inspector"
Set Msg = ActiveInspector.CurrentItem
Case Else
End Select
On Error GoTo 0
If Msg Is Nothing Then GoTo ExitProc
' figure out greeting line
On Error Resume Next
lGreetType = InputBox("Gender Select:" & vbCr & vbCr & "Drücke '1' männliche Kündigung oder  _
_
'2' für weibliche Form")
On Error GoTo 0
If lGreetType = False Then GoTo ExitProc
If lGreetType = 1 Then
'Datum = objItem.ReceivedTime  

Guten Tag " & _ geschlecht & " " & strGreetName & ",

vielen Dank für Ihre E-Mail

Wir bestätigen _ Ihnen hiermit den Erhalt Ihrer Kündigung vom " & Datum &".

Vielen Dank für Ihre Treue

" & .HTMLBody .Display End With ExitProc: Set Msg = Nothing Set MsgReply = Nothing End Sub

-----------------------------------------------------------
Wäre schön wenn Ihr mir helfen könntet.

Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Kleiner Ansatz
21.03.2014 21:43:25
Raphael
Hallo Thomas,
naja du bis im Excel und nicht im Outlook Forum. Aber wenn ich mir ansehe was du gerne möchtest würde ich das ganze mittels einer For Each Schleife lösen.
so ähnlich
dim selMail as MailItem
dim sel as Selection
set sel = application.activeexplorer.selection
for each selMail in sel
''Alle deine Änderungen die du gerne hättest
next
Gruess
Raphael
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

VBA für alle markierten Mails in Outlook nutzen


Schritt-für-Schritt-Anleitung

Um in Outlook VBA für alle markierten Mails auszuführen, kannst du die folgende Schritt-für-Schritt-Anleitung nutzen:

  1. Öffne den VBA-Editor in Outlook:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Erstelle ein neues Modul:

    • Klicke im Menü auf Einfügen und wähle Modul.
  3. Füge den Code ein:

    • Kopiere den folgenden Code und füge ihn in das Modul ein:
    Sub InsertNameInReply()
       Dim selMail As Outlook.MailItem
       Dim sel As Selection
       Dim strGreetName As String
       Dim geschlecht As String
       Dim lGreetType As Long
       Dim Datum As String
    
       Set sel = Application.ActiveExplorer.Selection
       For Each selMail In sel
           ' Hier kannst du den Namen und das Geschlecht verarbeiten
           ' Beispielhafte Implementierung für die Antwort
           Datum = selMail.ReceivedTime
    
           ' Geschlecht auswählen
           lGreetType = InputBox("Gender Select: 1 für männlich, 2 für weiblich")
           If lGreetType = 1 Then
               geschlecht = "Herr"
           ElseIf lGreetType = 2 Then
               geschlecht = "Frau"
           End If
    
           ' Antwort erstellen
           Dim MsgReply As Outlook.MailItem
           Set MsgReply = selMail.Reply
           MsgReply.HTMLBody = "Guten Tag " & geschlecht & " " & strGreetName & "," & _
                               "<br>Vielen Dank für Ihre E-Mail." & _
                               "<br>Wir bestätigen Ihnen hiermit den Erhalt Ihrer Nachricht vom " & Datum & "."
           MsgReply.Display
       Next selMail
    End Sub
  4. Führe das Skript aus:

    • Schließe den VBA-Editor und gehe zurück zu Outlook.
    • Wähle die E-Mails aus, die du bearbeiten möchtest.
    • Drücke F5 oder gehe zu Extras > Makros und wähle dein Makro aus.

Häufige Fehler und Lösungen

  • Fehler: "Objekt nicht gefunden"

    • Möglicherweise sind keine E-Mails ausgewählt. Stelle sicher, dass du tatsächlich E-Mails markiert hast, bevor du das Skript ausführst.
  • Fehler beim Zugriff auf Variablen

    • Achte darauf, dass alle Variablen korrekt deklariert und initialisiert sind. Überprüfe, ob du die richtigen Daten abgreifst, besonders beim Zugriff auf ReceivedTime.

Alternative Methoden

Einige Benutzer ziehen es vor, VBA mit Excel zu kombinieren, um Daten zu verarbeiten. Du kannst die E-Mails in Outlook öffnen, die relevanten Daten in Excel exportieren und dann in Excel deine Änderungen vornehmen.

Beispielcode zum Exportieren nach Excel:

Sub ExportEmailsToExcel()
    Dim sel As Selection
    Dim selMail As Outlook.MailItem
    Dim xlApp As Object
    Dim xlSheet As Object
    Dim i As Integer

    Set sel = Application.ActiveExplorer.Selection
    Set xlApp = CreateObject("Excel.Application")
    Set xlSheet = xlApp.Workbooks.Add.Sheets(1)

    i = 1
    For Each selMail In sel
        xlSheet.Cells(i, 1).Value = selMail.Subject
        xlSheet.Cells(i, 2).Value = selMail.ReceivedTime
        i = i + 1
    Next selMail

    xlApp.Visible = True
End Sub

Praktische Beispiele

Wenn du beispielsweise die Anzahl der markierten Mails ermitteln möchtest, kannst du den folgenden Code verwenden:

Sub CountMarkedEmails()
    Dim sel As Selection
    Set sel = Application.ActiveExplorer.Selection
    MsgBox "Anzahl der markierten Mails: " & sel.Count
End Sub

Tipps für Profis

  • Optimiere deine VBA-Skripte, indem du Fehlerbehandlungsroutinen hinzufügst.
  • Nutze die Debug.Print-Anweisung, um Werte während der Ausführung zu überwachen.
  • Experimentiere mit der Outlook-Objektbibliothek, um weitere Funktionen zu entdecken.

FAQ: Häufige Fragen

1. Wie kann ich den VBA-Code für alle markierten Mails anpassen? Du kannst die Schleife im Code anpassen, um spezifische Änderungen an jeder E-Mail vorzunehmen.

2. Funktioniert das auch in Outlook 365? Ja, der Code sollte auch in Outlook 365 funktionieren, solange du den VBA-Editor nutzen kannst.

3. Wo finde ich weitere Informationen zu Outlook VBA? Du kannst auf der Website herber.de nach weiteren Ressourcen suchen, um tiefer in die Welt von Outlook VBA einzutauchen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige