4.8k Aufrufe
Gefragt in E-Mail Outlook von
Hallo liebe Community,
ich habe schon viele Lösungen zu meinen Fragen hier gefunden, doch werde ich bei meinem jetzigen Problem leider nicht fündig:
Ich würde gerne in Outlook 2010 einen Automatismus erstellen, der alle Anhänge in einen Ordner kopiert. Es gab im Mai letzten Jahres schon einmal einen Beitrag dazu, doch funktioniert der VBA-Code bei mir nicht. Ich muss dazu sagen, dass ich keine Ahnung von der VBA-Programmierung habe, also seht es mir nach, wenn einem der Fehler direkt ins Gesicht spingen sollte :)
Mein (aus dem Forum kopierter) VBA-Code von Massaraksch sieht wie folgt aus:

Sub Anlagen_Speichern(olMail As MailItem)

'Objekte/Variablen deklarieren
Dim Ziel As String
Dim Anlagen As Attachments
Dim i As Integer

'Speicherordner angeben (bitte mit Backslash abschließen!)
Ziel = "C:\Users\...\Desktop\Test\"

'Abbruch, wenn Ordner nicht vorhanden
If Dir(Ziel, vbDirectory) = "" Then Exit Sub

'Mailanhänge ermitteln
Set Anlagen = olMail.Attachments

'alle Anhänge der Mail durchlaufen und speichern
For i = 1 To Anlagen.Count
'Dateiname zusammensetzen, Datum ist Empfangsdatum der Mail
Datei = Ziel & Format(olMail.ReceivedTime, "dd.mm.yyyy") & "_" & Anlagen.Item(i).FileName
'Anlage speichern
Anlagen.Item(i).SaveAsFile Datei
Next i

End Sub

Wenn ich nun eine Regel erstelle und dieses Programm als Skript aufrufe, passiert leider überhaupt nichts.
Kann mir jemand sagen was ich falsch mache?

Schon mal ein dickes DANKESCHÖN

Gruß

Florian

7 Antworten

0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Florian,

die Zeile
Ziel = "C:\Users\...\Desktop\Test\"

hast du an deine Verhältnisse angepasst? Bei dir müsste also (abhängig von dem Namen deines Benutzerkontos) stehen:

Ziel = "C:\Users\Florian\Desktop\Test\"


Und der Ordner "Test" ist auf dem Desktop auch erstellt?

Wie ist denn die Makro-Sicherheit eingestellt (Extras-Makro-Sicherheit)? Wenn dort z.B. "keine Warnungen und alle Makros deaktivieren" eingestellt ist, dann wird kein Makro ausgeführt.
Auch bei "Warnungen für signierte Makros. Alle nicht signierten Makros sind deaktiviert" wird dein Makro nicht ausgeführt, wenn es nicht signiert ist.

Zur Makrosicherheit schau mal hier nach:
Link 1: Makrosicherheit bei Office 2010
Link 2: Signieren eines Makroprojektes

Gruß

M.O.
0 Punkte
Beantwortet von
Guten Morgen M.O.
erst mal vielen Dank für deine Antwort!
Den Pfad habe ich hier nur gekürzt und der Ordner existiert auch. (Den Pfad habe ich direkt aus den Eigenschaften des Ordners kopert und ein Backslash rangehängt)
Ich habe mein VBA-Projekt nun auch zertifiziert und selbst mit der nicht empfohlenen Einstellung "alle Makros zu aktivieren" tut sich leider gar nichts.
Wenn ich die erstellte Regel auf andere Funktionen ausweite (z.B. E-Mail als gelesen markieren) wird das auch getan. Das heißt für mich, dass es wirklich an dem Makro liegt und nicht an der Regel, oder sehe ich das falsch?
Gibt es vielleicht die Möglichkeit im Debugger eine Art Stopkennzeichen zu setzen und dann manuell Schritt für Schritt beim Ausführen weiter zu gehen?

Alternativ würde mir auch ein makro helfen, welches die Anhänge direkt ausdruckt. Dazu habe ich auch schon einiges im www gefunden, doch auch das funktioniert nicht :(
Bin für alle Vorschläge offen!

Gruß
Florian
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Florian,

hast du das Makro in ein entsprechendes Modul eingefügt?
Schau mal hier nach, wie das richtig geht: Skripte in Outlook

Hast du bei der Erstellung der Regel auch das entsprechende Skript ausgewählt?

Ich habe das Makro mal bei mir (Outlook 2007) probiert und es funktioniert mit der Regel einwandfrei.

Du kannst das Makro ja mal testweise wie folgt ändern:

Sub Anlagen_Speichern(olMail As MailItem)

'Objekte/Variablen deklarieren
Dim Ziel As String
Dim Anlagen As Attachments
Dim i As Integer

'Speicherordner angeben (bitte mit Backslash abschließen!)
Ziel = "C:\Users\...\Desktop\Test\"
MsgBox "Makro gestartet!"

'Abbruch, wenn Ordner nicht vorhanden
If Dir(Ziel, vbDirectory) = "" Then
MsgBox "Abbruch! Ordner existiert nicht!"
Exit Sub
End If

'Mailanhänge ermitteln
Set Anlagen = olMail.Attachments

'alle Anhänge der Mail durchlaufen und speichern
For i = 1 To Anlagen.Count
'Dateiname zusammensetzen, Datum ist Empfangsdatum der Mail
Datei = Ziel & Format(olMail.ReceivedTime, "dd.mm.yyyy") & "_" & Anlagen.Item(i).Filename
'Anlage speichern
Anlagen.Item(i).SaveAsFile Datei
Next i

MsgBox "Anlagen sollten nun gespeichert sein!"

End Sub


Den Pfad musst du natürlich noch entsprechend anpassen.

Gruß

M.O.
0 Punkte
Beantwortet von
Meine Test-Regel besagt folgendes:
Bedingungen:
1. Nur auf diesem Computer
2. Nur von einer Person (Testweise hab ich hier meine eigene E-Mail angegeben)
3. Nur mit einer Anlage
Was soll passieren:
1. Skript ausführen (hier hab ich dann auch das richtige Skript ausgewählt.)

Da das Skript ja automatisch beim Erhalt von Mails aufgerufen werden soll, hab ich es auch unter ThisOutlookSession gespeichert.

Es scheint aber ein generelles Problem zu sein, da bei deinem neuen Code (vielen Dank für deine Mühe, Daumen hoch!!!!) nicht mal die MsgBox aufgerufen wird. Es passiert einfach nichts.

Hier noch mal ein paar Informationen zu meinem System:
- windows7 (bezüglich MsgBox ein Problem?! )
- Rechner ist im Firmennetzwerk (Ich habe also keine Administratorenrechte)

verzweifelter Gruß;)
Florian
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Florian,

ich habe das auch auf meinem Firmenrechner (auch mit Windows 7) probiert und es klappt dort (siehe meine Antwort 3).
Mach doch einfach mal "Nur von dieser Person" weg und probier dann mal ob das Skript läuft.

Gruß

M.O.
0 Punkte
Beantwortet von
SUPER!!!
Es hat funktioniert, nur weiß ich nicht warum ;)
Mit etwas Frust hab ich einfach den Rechner neu gestartet und es ging einfach?! Dein Makro funktioniert super auch mit der MSgBox! Die Wege der Technik sind unergründlich°!°
Vielen Dank nochmal M.O.

Frohe Restwoche und

Grüße aus Hannover!

Florian
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Florian,

freut mich, dass es doch noch geklappt hat.

Gruß

M.O.
...