Bei Ihnen trudeln haufenweise E-Mails ein, deren Anhänge Sie dann ablegen müssen – und zwar jedes Mal in den gleichen Ordner?
Das lässt sich automatisieren. Mit ein bisschen VBA – nicht erschrecken, ich zeig Ihnen, wie Sie das einrichten:
Öffnen Sie den VBA-Editor in Outlook (dazu drücken Sie die Tastenkombination Alt+F11).
Fügen Sie ein neues Modul hinzu. Dazu klicken Sie im Projekt-Explorer, den Sie links im Fenster finden, mit der rechten Maustaste auf den Eintrag Projekt1, wählen dann Einfügen und dann Modul.
In das große leere Feld rechts fügen Sie nun Folgendes ein:
Public Sub Anhaenge_handeln(myItem As Outlook.MailItem) Dim mAtts As Attachments Dim mAtt As Attachment Set mAtts = myItem.Attachments While mAtts.Count > 0 Set mAtt = mAtts(1) mAtt.SaveAsFile "C:\meinSpeicherort\" & mAtt.DisplayName mAtts.Remove 1 Wend End Sub
Ersetzen Sie darin C:\meinSpeicherort durch das Verzeichnis, in das Sie die Anhänge speichern wollen. Speichern Sie – durch Klick auf die Diskette (wie altmodisch!) oder mit der Tastenkombination Strg+S.
Schließen Sie den VBA-Editor.
Öffnen Sie den Regel-Manager mit START > Verschieben > Regeln > Regeln und Benachrichtigungen verwalten … und klicken Sie auf Neue Regel. Im Regel-Assistent klicken Sie im Feld 1. Schritt auf Regel ohne Vorlage erstellen > Regel auf von mir empfangene Nachrichten anwenden, und dann auf Weiter >.
Nun bestimmen Sie die Bedingung, unter der Sie die automatische Anhangspeicherung vornehmen wollen (z.B. alle Mails von einem bestimmten Empfänger, mit einem bestimmten Schlüsselwort, …). Weiter >.
Unter 1. Schritt: Aktionen auswählen haken Sie nun ein Skript ausführen an (dazu müssen Sie eventuell ein bisschen hinunterscrollen), dann klicken Sie auf den unterstrichenen Text ein Skript, und jetzt wählen Sie in der Skriptliste Anhaenge_handeln aus. Ok. Weiter >. Weiter >. Fertigstellen.
Viel Freude mit der neuen Automatik!
Vielen Dank für den tollen Beitrag,
ich habe nur ein Problem ich möchte mehrere Skripte einfügen und mit verschiedenen Regeln Laufen lassen. Ich bekomme aber keine neuen Projekte Angelegt nur Module.
Aber bei Outlook erscheint nur das der Name des Projektes und nicht der Module die unter dem Projekt liegen
Gefällt mirGefällt mir
Danke für das Lob 🙂
Outlook denkt ein bisschen anders als die anderen Office-Produkte: ganz Outlook ist ein einziges Projekt. In jedem Projekt kann man Module anlegen so viele man möchte, sie müssen nur unterschiedliche Namen haben. In die kommen dann die Prozeduren (=“Makros“, beginnend mit Sub und beendet mit End Sub), die auch wieder alle unterschiedlich heißen müssen (vereinfacht dargestellt). Jedes Modul kann beliebig viele Prozeduren beinhalten. Die Prozeduren (Makros) können dann einzeln aufgerufen werden.
Gefällt mirGefällt mir
Hallo,
ich habe auch einen ähnlichen Fall und zwar möchte gerne die Ungelesene E-Mails mit Anhänge automatisch als gelesen markieren und gleichzeitig die Anhänge in einem bestimmten Speicherort ablegen. Wenn Outlook gestartet ist, sollte das ganze automatisch passieren!! Wäre mit Ihrem Code so funktionieren ?
Vielen Dank im Voraus
LG
Karim
Gefällt mirGefällt mir
Vielen Dank für dieses nützliche Werkzeug. Ein weitergehendes Problem hätte ich (und scheinbar nicht nur ich) da aber noch: Wie kann man festlegen, das nur diejenigen Anhänge gespeichert werden, die schon im Pdf-Format hereinkommen? Mit dieser Formel werden bei mir auch Bildformate (zB. wenn sie in die Email eingebettet sind) abgelegt.
LG
SF
Gefällt mirGefällt mir
Hallo Stefan,
da braucht’s nur eine kleine Ergänzung, denkt man, aber die Schleife muss nun auch umgeschrieben werden.
Public Sub Anhaenge_handeln(myItem As Outlook.MailItem)
Dim mAtts As Attachments
Dim mAtt As Attachment
Dim I As Long
Set mAtts = myItem.Attachments
For I = mAtts.Count To 1 Step -1
Set mAtt = mAtts(I)
If Right(mAtt.DisplayName, 4) = „.pdf“ Then
mAtt.SaveAsFile „C:\meinSpeicherort\“ & mAtt.DisplayName
mAtts.Remove I
End If
Next I
End Sub
Gefällt mirGefällt mir
Hi,
die Ur-Variante funktioniert super, Danke dafür! Die 2. Variante in der nur nach .pdf gesucht wird führt jedoch zum Absturz von Outlook2013 bei mir (keine Rückmeldung, Endlos Eieruhr). Irgendeine Idee woran das liegen könnte?
Vielen Dank,
Andreas
Gefällt mirGefällt mir
Hallo Andreas,
ich hab das nun korrigiert – die Schleifenlogik passt nicht mehr, wenn man nur manche Anhänge löscht. Danke für das Feedback, ich hoffe, das passt nun.
lg
Katharina
Gefällt mirGefällt mir
Dankefein.
LG
SF
Gefällt mirGefällt 1 Person
Hallo,
dieser Skript wäre genau das was ich gesucht habe 🙂
Leider wird er zwar ausgeführt aber es werden keine Dateien gespeichert.
Ich habe es auf bereits eingegangene Mails mittels Regel jetzt anwenden versucht.
Meine Umgebung wäre Windows 10 mit Outlook 2013 an einem Exchange Server 2008.
Verwendet habe ich ein gemapptes Netzlaufwerk sowie Testweise einen Lokalen Ordner.
Mache ich etwas falsch?
Vielen Dank!
LG
user96
Gefällt mirGefällt mir
Hallo,
dieser Skript wäre genau das was ich gesucht habe 🙂
Leider wird er zwar ausgeführt aber es werden keine Dateien gespeichert.
Ich habe es auf bereits eingegangene Mails mittels Regel jetzt anwenden versucht.
Meine Umgebung wäre Windows 10 mit Outlook 2013 an einem Exchange Server 2008.
Verwendet habe ich ein gemapptes Netzlaufwerk sowie Testweise einen Lokalen Ordner.
Mache ich etwas falsch?
Vielen Dank!
LG
user96
Gefällt mirGefällt mir
Hallo,
das Skript behandelt das gerade aktive E-Mail und iteriert nicht durch einen vorhandenen Ordner. Da müsste noch eine entsprechende Schleife außen herum…
Gefällt mirGefällt mir
Hallo Katharina,
kannst Du mir da noch behilflich sein mit der Schleife außenherum?
Gerne auch mit Geschenkspapier 😉
lg
Gefällt mirGefällt mir
Bissi Geduld, bitte – bin noch auf Urlaub. Lösung kommt demnächst 🙂
Gefällt mirGefällt mir
Vielen Dank 🙂
Erholsamen Urlaub weiterhin
lg
Gefällt mirGefällt mir
Vielen herzlichen Dank für das Skriptlein 🙂
Funktioniert auch mit Netzwerkverzeichnisadressen ganz wunderbar, das erspart uns einmal im Monat ab sofort viel lästige Abspeicherarbeit 🙂
Ich habe nur festgestellt, dass bei der Pfadangabe am Schluss noch ein Rückschrägstrich stehen muss, sonst denkt Outlook beim Speichern, das letzte Verzeichnis wäre teil des zu speichernden Dateinamens.
Danke sehr!
Gefällt mirGefällt mir
Danke – hab das korrigiert, damit alles klar ist 🙂
Gefällt mirGefällt mir
Hallo,
wollte mal ganz leise Nachfragen ob meine Problemstellung auch gelöst werden kann.
lg
Gefällt mirGefällt mir
Ich denke, ich komm heut Abend dazu – ich hab grad einige dringende Kundenaufträge, die ich hoffentlich noch erledigen kann.
Hab’s nicht vergessen, nur mal dem schnöden Geldverdienen untergeordnet 😉
lg
Gefällt mirGefällt mir
Dankeschön….. 🙂
und sorry für´s nerven
Gefällt mirGefällt mir
Sodala:
Public Sub Inbox_Anhaenge_handeln()
Dim myItem As Outlook.MailItem
Dim mAtts As Attachments
Dim mAtt As Attachment
Dim olNamespace As Outlook.NameSpace
Dim olFolder As Outlook.Folder
Dim olItems As Outlook.Items
Set olNamespace = GetNamespace(„MAPI“)
Set olFolder = olNamespace.GetDefaultFolder(olFolderInbox)
Set olItems = olFolder.Items
For Each myItem In olItems
Set mAtts = myItem.Attachments
While mAtts.Count > 0
Set mAtt = mAtts(1)
mAtt.SaveAsFile „C:\meinSpeicherort\“ & mAtt.DisplayName
mAtts.Remove 1
Wend
Next myItem
Set mAtt = Nothing
Set mAtts = Nothing
Set myItem = Nothing
Set olItems = Nothing
Set olFolder = Nothing
Set olNamespace = Nothing
End Sub
Danke fürs Warten und Erinnern – das passt schon 🙂 Manchmal bleibt halt was „Freiwilliges“ liegen.
Gefällt mirGefällt mir
Ich schon wieder…. 😦
Vorab vielen Dank für Deine Mühe, ich habe es nach Deiner Anweisung gemacht aber nun kann ich in der Regel kein Skript auswählen. Im VBA Editor steht es aber unter Modul1 drinnen…
Sorry…
Gefällt mirGefällt mir
Guten Morgen 🙂
Wieso Regel? Das neue Makro durchläuft die gesamte Inbox und legt alle Anhänge ab. Aktiviert wird es am besten durch ENTWICKLERTOOLS > Makros > … (Wenn die ENTWICKLERTOOLS nicht da sind: DATEI > Optionen > Menüband anpassen.) Oder du bindest es in die Schnellzugriffsleiste ein (DATEI > Optionen > Schnellzugriffsleiste > …)
ACHTUNG ACHTUNG ACHTUNG: Dieses Makro speichert ALLE Anhänge aus der Inbox ab und löscht sie aus den Mails!! Wenn das so nicht das Ziel ist, musst du ggf. noch was anpassen (z.B. auf pdfs einschränken, Absender spezifizieren, … siehe andere Makrobeispiele hier).
Das alte (ohne Schleife) hat Sinn in einer Regel, weil es sich ja nur mit der aktuell ausgewählten Nachricht befasst.
Gutes Gelingen!
Gefällt mirGefällt mir
Guten Morgen,
habe vor kurzem deine Schleife ausprobiert, aber leider erzeugt sie einen Syntaxfehler.
Leider kenne ich mich VBA kaum aus.
Können Sie mir weiterhelfen
lg
Gefällt mirGefällt mir
Guten Morgen,
ich habe vor kurzem deine Schleife ausprobiert leider erzeugt sie einen Syntaxfehler.
Leider kenne ich mich in VBA nicht aus.
Können Sie mir weiterhelfen :).
lg
Gefällt mirGefällt mir
Hallo,
hab die Schleife jetzt grad noch einmal korrigiert – es kann sein, dass beim Copy+Paste die Anführungszeichen falsch kopiert werden. Die müssen immer die geraden Doppelstricherl sein (auf der Tastatur über dem 2er). Wenn die (warum auch immer) beim Einfügen durch andere ersetzt werden, müssten Sie sie manuell überarbeiten und durch die richtigen ersetzen.
Das ist einmal beim Text „MAPI“ und einmal beim Datenpfad (der muss sowieso überarbeitet werden).
AchtungAchtungAchtung: es wird der gesamte Posteingang von Anhängen befreit!
Hoffe es klappt wunschgemäß 🙂
Gefällt mirGefällt mir
Hallo Katharina,
dein Makro läuft super danke schön für die Hilfe!
Als „nichtsooftvbamakrojaner“… wie kann ich das Makro auf einen speziellen Ordner umstellen?
Das wäre super… dann könnte ich mein Postfach systematisch verkleinern…
Danke
Viele Grüße
Gerhard
Gefällt mirGefällt mir
Set olFolder = olNamespace.GetDefaultFolder(olFolderInbox)
müsstest du durch
Set olFolder = olNamespace.GetDefaultFolder(olFolderInbox).Folders(„meinUnterordner“)
ersetzen, wobei meinUnterordner der Name des Ordners ist, durch den sich das Makro durcharbeiten soll.
Herzliche Grüße
Katharina
Gefällt mirGefällt mir
Klappt hervorragend mit dem Abspeichern – nochmals Danke schön.
Was ich gerade registriert habe – das Löschen der Anhänge funktioniert nicht… – nach mehrmaligen probieren … nö …sind weiterhin vorhanden… noch ’nen Tipp was das sein kann?
Merci!
Gefällt mirGefällt mir
Hi! Ich hab das umgekehrte Problem, dass ich die Anhänge nur ablegen will und diese danach im Posteingang noch vorhanden sein sollten – dazu eine Idee? lg
Gefällt mirGefällt mir
Ja!
Statt
While mAtts.Count > 0
Set mAtt = mAtts(1)
mAtt.SaveAsFile „C:\meinSpeicherort\“ & mAtt.DisplayName
mAtts.Remove 1
Wend
sollte das klappen:
Dim I as long
For I = 1 to mAtts.Count
Set mAtt = mAtts(I)
mAtt.SaveAsFile „C:\meinSpeicherort\“ & mAtt.DisplayName
Next I
Gefällt mirGefällt mir
Hi,
danke fuer die gute Beschreibung und das Erstellen des VBA. Bei mir hat das VBA an einem Tag wunderbar funktioniert, am naechsten Tag funktioniert es ploetzlich nicht mehr. Es wurden keine Einstellungen geandert. Habe auch das komplette VBA mehrmals geloescht und wiedererstellt, leider ohne Erfolg. Welchen Grund kann es haben, dass das VBA nicht mehr funktioniert? Gibt es eine Moeglichkeit zu pruefen, ob das VBA ueberhaupt aufgerufen wird? Danke im Voraus
Gefällt mirGefällt mir
Hallo Michael,
eine Einführung in das Programmieren lässt sich leider nicht in einem kurzen Kommentar abhandeln. Genauso wenig kann ich von hier aus beurteilen, was das Problem sein kann – als völliger VBA-Neueinsteiger kann man leider auch sehr viele Fallen übersehen.
Zum Nachlesen gibt’s seitenweise Tutorials, zum Beispiel hier: http://www.vboffice.net/de/articles/vba-editor-erste-schritte/ Für mehr Praxisbezug empfehle ich ein Coaching oder ein klassisches Classroom-Training.
Herzliche Grüße
Katharina
Gefällt mirGefällt mir
Das Problem ist die Sicherheitseinstellung in Outlook.
Ich hatte dasselbe Problem.
Unter Optionen>TrustCenter>Einstellungen für das Trust Center>Makroeinstellungen die Sicherheitsstufe runtersetzen, da dein Makro vermutlich keine Signatur hat. Danach Outlook neu starten und es sollte funktionieren 😉
Gefällt mirGefällt 1 Person
Hallo,
habe dieses Skript versucht:
Public Sub Anhaenge_handeln(myItem As Outlook.MailItem)
Dim mAtts As Attachments
Dim mAtt As Attachment
Set mAtts = myItem.Attachments
While mAtts.Count > 0
Set mAtt = mAtts(1)
mAtt.SaveAsFile „Name des Laufwerks z.B. X:\Name des Ordners\Name des Unterordners\“ & mAtt.DisplayName
mAtts.Remove 1
Wend
End Sub
Der Ordner liegt auf einem Server und es sollen wie oben beschrieben nur die PDF Anhänge abgespeichert werden.
Leider ohne das etwas gemacht wird.
Hab ich einen Fehler in der Laufwerk/Ordner Bezeichnung?
VG
Michael
Gefällt mirGefällt mir
Hallo ! Danke für die einfache Lösug und die klaren Anweisungen. Mein Problem ist dass mir mein Outlook 2016 „ein skript ausführen“ als Aktion zum ausführen nicht anbietet (natürlich habe ich gescrollt und gesucht). Was mache ich falsch ???
Danke für einen Rat.
Gefällt mirGefällt mir
Hallo Reinhard,
5 Arten, ein Makro zu starten – ab heute auf meinem Blog: https://blog.soprani.at/2017/01/09/5-arten-ein-makro-zu-starten/
Such dir was Passendes aus 🙂
lg
Katharina
Gefällt mirGefällt mir
Liebe Katharina ! Danke für die Antwort.
Ich hab mir die 5 Arten angesehen, aber das kann ja nicht die Lösung sein: hier handelt es sich doch nicht um ein Makro sondern ein Skript ausserdem soll es ja aus Outlook heraus mit einer Regel ausgeführt werden. Es wird bei der Auswahl der möglichen Aktionen im Regel-Assistenten der Regel die Aktion „ein Skript starten“ nicht angeboten…
Gefällt mirGefällt mir
Hallo Reinhard,
ach so, du willst das Makro per Regel starten.
Die Frage klingt vielleicht blöd, aber hast du im Fenster mit den möglichen Aktionen nach unten gescrollt? Der Eintrag „ein Skript ausführen“ ist auf den ersten Blick nicht ersichtlich.
herzliche Grüße
Katharina
Gefällt mirGefällt mir
irgendwas ist da in der Kommunikation durcheinander gekommen. Ich antworte auf Deine Frage von 17. Januar 2017 um 11:30 (Danke). Die Frage ist nicht blöd, sie drängt sich ja auf. Deshalb habe ich in meinem ersten Kommentar bereits angeführt dass ich mehrmals in beide Richtungen gescrollt habe. Die Luste ist aber eher krz da sehe ich alles in 1 Fenster. Gerne kann ich einen screenshot senden wenn ich weiss wie. Ich werde es aber gerne nochmal versuchen und dann berichten. Welcher Fehler könnte mir unterlaufen sein dass diese Option nicht angeboten wird ???
Gefällt mirGefällt mir
Wenn die Scrollerei nichts bringt, dann kann es noch sein, dass die Option unterdrückt ist (auf Firmenrechnern gang und gäbe). Dann geht’s leider nicht. Ich stell mal morgen die Anleitung ein, wie das aussehen müsste.
Gefällt mirGefällt mir
Ganz lieb ! Ich bin selbst die „Firma“ und habe eine völlig korrekte Office 365 Lizenz… Aber ich versuchs nochmal. Danke jedenfalls
Gefällt mirGefällt mir
Hallo zusammen,
das Problem hatten anscheinend weitere Menschen (ich auch)
Hier die regestrie Einstellung:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Outlook\Security]
„EnableUnsafeClientMailRules“=dword:00000001
und hier der Link zum Artikel Bei Microsoft:
https://answers.microsoft.com/en-us/msoffice/forum/msoffice_outlook-mso_win10/the-option-to-run-a-scritp-has-disappeared-from/d289e698-47fa-497a-80fa-633067a0de37#ThreadAnswers
Gefällt mirGefällt mir
Hallo. Vielen Dank für dieses Skript.
Wie müsste dieses aussehen, wenn
1. Die Dateien nicht im Anhang gelöscht werden sollen
und
2. doppelt vorhandene Dateinamen mit fortlaufenden Zahlen ergänzt werden. (Bsp.: Datei.csv, Datei(1).csv, Datei(2).csv usw.)
Vielen Dank im Voraus.
Gefällt mirGefällt mir
Hallo Raik,
die nicht-Löschen-Variante findest du bereits in den Kommentaren 🙂
Das mit den doppelten ist eine nette Zusatzchallenge – da müsste vor jedem Speichern mit Dir gefragt werden, ob’s das File schon gibt, und wenn ja müsste die höchste vorkommende Nummer gesucht werden und dann beim Speichern die fortlaufende Nummer drangehängt werden.
Das sprengt jetzt hier in den Kommentaren den Rahmen, da mach ich bald einmal einen eigenen Blogpost draus.
herzliche Grüße
Katharina
Gefällt mirGefällt mir
Hallo. Danke für die Antwort. Nachdem ich den Makro geändert und Outlook neu gestartet habe, wurden die Dateien gespeichert. Bleiben auch wunderbar in den Mails.
Habe mit den Schleifen etwas rumgespielt. Folgendes Ergebnis. Gibts dazu eventuell Verbesserungsvorschläge? Danke schon mal.
Public Sub Anhaenge_handeln(myItem As Outlook.MailItem)
Dim mAtts As Attachments
Dim mAtt As Attachment
Dim I As Long
Dim sDatei As String
Dim ZAEHLER As Integer
Set mAtts = myItem.Attachments
ZAEHLER = 1
For I = 1 To mAtts.Count
Set mAtt = mAtts(I)
sDatei = „C:\SPEICHER\“ & mAtt.DisplayName
While Dir(sDatei) „“
sDatei = „C:\SPEICHER\“ & ZAEHLER & „_“ & mAtt.DisplayName
ZAEHLER = ZAEHLER + 1
Wend
mAtt.SaveAsFile sDatei
Next I
End Sub
Gefällt mirGefällt mir
Hallo,
Ich habe die VBA etwas abgewandelt und auch mehrfach angelegt, da ich es mehrmals benötige.
Die Zeile
Public Sub Anhaenge_handeln(myItem As Outlook.MailItem)
habe ich in z.B. folgende varianten verändert
Variante 1: Public Sub Anhaenge_10071_Eing(myItem As Outlook.MailItem)
Variante 2: Public Sub Anhaenge_10071_Ausg(myItem As Outlook.MailItem)
Analog hierzu die folgende Zeile
mAtt.SaveAsFile „C:\meinSpeicherort\“ & mAtt.DisplayName
umgewandelt je zu
mAtt.SaveAsFile „T:\Belegtransfer\10071\Eingang\“ & mAtt.DisplayName
mAtt.SaveAsFile „T:\Belegtransfer\10071\Ausgang\“ & mAtt.DisplayName
Der Rest ist wie im Original ganz oben.
Mails für den Kunden 10071 betreffen Eingangs- oder auch Ausgangsrechnungen.
Über eine Regel sollen Anlagen zu Eingangs- oder Ausgangsrechnungen in die betreffenden Ordner.
Zusätzlich die Mail als gelesen Markiert und in einen Unterordner verschoben werden.
Das anlegen der Regel mit anwendung der jeweiligen Skripte hat wunderbar funktioniert, allerdings hat er am nächsten Tag keine Anlage mehr gespeichert.
Die Mails wurde zwar wie gewünscht „gelesen“ und verschoben aber die Anlagen nicht mehr gespeichert.
Hab ich was falsch gemacht??
Besten Dank vorab!
Gefällt mirGefällt mir
Liebe Katharina,
ich habe den ganzen Thread durchgelesen und will Dich jetzt auch nicht mit Fragen piesacken. Was ich machen will: Immer wenn ein Mail mit einem Anhang – durch eine Regel gesteuert – in eine bestimmten Ordner Outlook „Results“ ankommt, soll der Anhang in einen bestimmten Ordner auf ein Netzlaufwerk Q:\Results abgespeichert werden, bzw. soll die dort bereits liegende Datei überschrieben werden.
All dies hast Du hier schon irgendwann mal gelöst, aber ich bin mir nicht so ganz sicher welche Versionen aktuell sind und funktionieren, weil Du dann manchmal später geschrieben hast, dass Du noch was geändert hast.
Kannst Du mir auf die Sprünge helfen?
Ganz lieben Dank aus dem saukalten Prag!
Gefällt mirGefällt mir
Hallo Heinz,
der Code ist der folgende (und alles andere hier in dem Thread funktioniert auch, ich korrigier Verbesserungen immer direkt):
Public Sub Anhaenge_handeln(myItem As Outlook.MailItem)
Dim mAtts As Attachments
Dim mAtt As Attachment
Dim myPath As Variant
myPath = „“
If Left(myItem.Subject, 4) = „VISA“ Then
myPath = „Z:\0privat\Haushalt\Finanzen\VISA“
ElseIf myItem.SenderEmailAddress = „kunde@gmx.at“ Then
myPath = „C:\Users\Public\Documents\Kunde“
End If
If myPath „“ Then
Set mAtts = myItem.Attachments
While mAtts.Count > 0
Set mAtt = mAtts(1)
mAtt.SaveAsFile myPath
mAtts.Remove 1
Wend
End If
End Sub
Gestartet wird die Aktion dann in der Regel – unter „was soll mit der Nachricht geschehen“ steht irgendwo „ein Skript ausführen“, und da kannst du dann dieses auswählen.
lg Katharina (und glaub nicht, Wien wäre wärmer 🙂 )
Gefällt mirGefällt mir
Hallo Zusammen!
Kann mir jemand zu folgendem helfen:
Ich möchte per Script einfach einen bestimmten Link ausführen lassenn, zb. http://www.orf.at.
Der Regelassistent entscheidet (wie bei Anhänge) wann dies ausgeführt werden soll
Danke!
SG
Philipp
Gefällt mirGefällt mir
mAtt.SaveAsFile myPath ist für diesen Fall ein bisschen aufzublasen – ersetze die Zeile einfach durch
mAtt.SaveAsFile myPath & „\“ Format(Date, „yyyymmdd“) & „_“ & mAtt.DisplayName
lg
Katharina
Gefällt mirGefällt mir
„Einen Link ausführen?“
d.h. der Link soll aktiviert, also im Browser angezeigt werden?
lg
Katharina
Gefällt mirGefällt mir
@katharinakanns: ja genau
Habe es im Visual Basic Editor, Outlook 2016 mit folgendem Modul geschafft:
Public Sub ORF_handeln(myItem As Outlook.MailItem)
Set wshshell = CreateObject(„WScript.Shell“)
wshshell.Run „www.orf.at“
End Sub
Jetzt habe ich das Problem, dass seit einem Neustart des PC das ganze nicht mehr funktioniert??
Gefällt mirGefällt mir
Unter Optionen>TrustCenter>Einstellungen für das Trust Center>Makroeinstellungen die Sicherheitsstufe runtersetzen, da dein Makro vermutlich keine Signatur hat. Danach Outlook neu starten und es sollte funktionieren
Gefällt mirGefällt mir
Guten Morgen!
Ich benutzen den Eingangscode um aus Emails Anhänge abzulegen. Klappt sehr gut, vielen Dankl dafür!
Die Quellemail kommt immer vom gleichen Absender und der Anhang hat täglich den identischen Namen. Wie wandle ich den Code so ab, dass im Zielordner die Datei nicht überschrieben, sondern beispielsweise ergänzt um ein vorangestelltes Datum (oder falls einfacher zu programmieren: …eine fortlaufende Nummer…) abgespeichert wird?
Gefällt mirGefällt mir
Hallo Katharina,
ich bin etwas verwirrt und hoffe, du kannst mir weiterhelfen.
Ich bin absoluter Neuling im programmieren. Copy Paste dagegen kann ich sehr gut 🙂
Deine Schritte, habe ich verfolgt und erledigt. Das Makro kann ich über die Regel aktivieren, jedoch bin ich verwirrt was das Löschen der Anlage angeht.
Ich möchte gerne für mein Unternehmen die Belege automatisch in den Rechnungseingangsordner ablegen lassen, das funktioniert mit der Programmierung – wenn ich den Speicherort hinterlegt habe, richtig?
Wird bei deinem oben genannten Beispiel der Anhang aus der E-Mail gelöscht?
Im welchen Format speichert er die Datei ab – in der Originaldatei?
Ich habe hier mehrmals das Problem gelesen, dass die Regel einmalig funktioniert hat, aber nicht für Folge E-Mails. Muss ich da etwas extra einstellen, dass mir das nicht passiert?
Kann ich einen bestimmten Zeitraum schlüsseln, in der das Makro/die Regel erst greift – z.B. erst ab 2017?
Ich hoffe, dir macht es nichts aus, dass ich dich mit so vielen Fragen überrenne.
Viele Grüße und schon mal ganz tolle Ostertage
Eric
Gefällt mirGefällt mir
Meld mich bald – gönne mir gerade eine Auszeit 😊 Ich hoffe, es eilt nicht ganz arg.
Lg
Katharina
Gefällt mirGefällt mir
Hallo Eric,
richtig, die Belege werden im entsprechenden Ordner abgelegt. In meinem Beispiel wird der Anhang dann gelöscht, und die Datei wird im Originalformat abgelegt.
Regeleinstellungen sind wiederum ein anderes Thema – wenn das automatisiert erfolgen soll, dann muss die Regel entsprechend formuliert werden, und die Regeln gelten grundsätzlich nur für neu ankommende Mails. Sie lassen sich auch „in die Vergangenheit“ ausführen – ich schreib da bald etwas ausführlicher dazu und geb Bescheid.
Herzliche Grüße
Katharina
Gefällt mirGefällt mir
Einiges gibt’s übrigensschon zum Thema „Regeln“: https://blog.soprani.at/2014/12/01/weihnachten-zur-regel-machen-grosputz-in-outlook/
Gefällt mirGefällt mir
Super das erste mal dass ein VBA script aufs erste mal funktionierte . Und auch die Anleitung des Erstellens. Da hat jemand mitgedacht.
Natürlich kommt jetzt auch noch eine Frage . Wenn ich das script ausführe, dann speichert es den Anhang mit dem vorliegenden Dateinamen. Wenn in einer weiteren Mail der Dateiname identisch ist dann wird dieser im Zielverzeichniss ersetzt. Mir würde es reichen den Dateinamen beim speichern mit der aktuellen Uhrzeit inkl. sekunden zu er gänzen oder zu ersetzen. Sicher sehr simpel aber hilfreich. Eine fortlaufende Nummerierung wäre natürlich ein Traum.
Danke
Gefällt mirGefällt mir
ups gerade gesehen das der Post vor mir dasselbe Anleigen hatte
Gefällt mirGefällt mir
Heut gibt’s die fortlaufende Nummerierung 🙂
Bitte hier entlang: https://blog.soprani.at/2017/04/20/outlook-anhaenge-ablegen-und-nummerieren/ hier
Gefällt mirGefällt mir
Heut gibt’s die fortlaufende Nummerierung 🙂
Bitte hier entlang: https://blog.soprani.at/2017/04/20/outlook-anhaenge-ablegen-und-nummerieren/ hier
Gefällt mirGefällt mir
Hallo, ich weiß es ist ein etwas blöde Frage aber Outlook gibt mir beim Erstellen die Regeln nicht die Möglichkeit ein Script auszuführen. Muss ich da noch einen Entwicklermodus aktiveren oder so?
Die Makrosicherheitseinstellungen habe ich schon gesenkt.
Gefällt mirGefällt mir
Hallo David,
hier die registry Einstellung:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Outlook\Security]
„EnableUnsafeClientMailRules“=dword:00000001
und hier der Link zum Artikel bei Microsoft:
https://answers.microsoft.com/en-us/msoffice/forum/msoffice_outlook-mso_win10/the-option-to-run-a-scritp-has-disappeared-from/d289e698-47fa-497a-80fa-633067a0de37#ThreadAnswers
Gefällt mirGefällt mir
Hallo, weiter oben geht es um das Abspeichern von E-Mail-Anhängen.
Ich habe für unsere Abteilung dazu ein funktionierendes Skipt erstellt, das die in Outlook 2013 gewählten E-Mail’s als PDF-Dateien abspeichert und dabei die Dateinahmen der im gleichen Verzeichnis abgelegten Anhänge auf den Namen der zugehörigen E-Mail-Kopie.pdf in Abhängigkeit vom Eingangsdatum abstimmt.
Leider werden jedoch alle im Body eingebettenen Anhänge (Fotos, Logos u.ä.) , die ja bereits in der PDF-Datei enthalten sind, ebenfalls als Attachment erkannt und zusätzlich zu den „echten“ Anhängen im Zielverzeichnis abgespeichert.
Diese müssen z.Z. vom Anwender als solche erkannt und wieder gelöscht werden.
Das Abspeichern erfolgt letztlich mit:
myItem.Attachments.Item(i).SaveAsFile zielPfad & „\“ & zielDatei$
Einzig für eingebettete Attachments ohne Namen kann ich das im Vorfeld verhindern mit:
If UCase(Left(zielDatei$, 17)) = „UNBENANNTE ANLAGE“ Then GoTo naechste_Anlage
Wie kann man vor dem Speichern beide Arten von Attachments trennen?
Das komplette Skript sende ich gerne per E-Mail zu (erscheint mir für hier zu umfangreich).
Da ich Google hinreichend, aber leider ohne Erfolg strapaziert habe, bin ich für jeden Tip dankbar.
Gefällt mirGefällt mir
Pingback: #Outlook-Anhänge #ablegen und #nummerieren | Soprani Software
Hallo Katharina,
ich hoffe Du kannst mir weiterhelfen. Ich habe folgendes Problem:
Mit dem nachfolgenden Makro warden die Anhänge ausgewählter Mails mit Zeitstempel des Eingangs abgespeichert. Allerdings möchte ich nur die Anhänge speichern und nicht auch noch die Icons in den Signaturen, welche regelmäßig für einen ziemlichen Verhau auf meinem Laufwerk sorgen. Kannst Du mir evtl. weiterhelfen?
Sub Anlage_verschieben()
Dim strPath As String
Dim objMail As MailItem
Dim intAnlagen As Integer, i As Integer
On Error Resume Next
‚Pfad zu meinem Ordner
strPath = „L:\AGCS\GER\Claims\LIAB\Muenchen\HIRN\Paperless“
‚Schleife
For Each objMail In Outlook.ActiveExplorer.Selection
With objMail
‚Mails auf vorh. Anlagen prüfen
intAnlagen = .Attachments.Count
If intAnlagen > 0 Then
For i = 1 To intAnlagen
‚Anlagen im vordefinierten Verzeichnis sichern
.Attachments.Item(i).SaveAsFile strPath & „\“ & Format(.ReceivedTime, „yyyy-mm-dd_hh-mm“) & “ “ & .Attachments.Item(i).FileName
Next i
End If
End With
Next objMail
End Sub
Gefällt mirGefällt mir
Hallo Adrian,
die Icons aus den Signaturen zu vermeiden ist tatsächlich ein ewiges Problem – manchmal sind sie „Anhänge“, manchmal eingebettete Bilder, und das können wir Mailempfänger uns nicht aussuchen, sondern das wird im „sendenden Programm“ bestimmt.
Eine Möglichkeit wäre, einen Anhang nur dann zu speichern, wenn er kein kleines Bildchen ist – z.B. mit
If Right(.Attachments.Item(i).DisplayName, 3) „jpg“ And Right(.Attachments.Item(i).DisplayName, 3) „bmp“ And .Attachments.Item(i).Size < 1000 Then
Ansonsten gibt es keine Möglichkeit, die "sinnvollen" von den "sinnlosen" Anhängen zu unterscheiden.
Schönen Tag,
herzliche Grüße
Katharina
Gefällt mirGefällt mir
Hallo Katharina,
vielen Dank für Deine Rückmeldung. Ich hatte bereits vermutet, dass diese Lösung eher schwer sein wird. Kurze Frage zu deinem Code.
An welcher Stelle meines Codes müsste ich diesen ergänzen?
Sub Anlage_verschieben()
Dim strPath As String
Dim objMail As MailItem
Dim intAnlagen As Integer, i As Integer
On Error Resume Next
‚Pfad zu meinem Ordner
strPath = „L:\AGCS\GER\Claims\LIAB\Muenchen\HIRN\Paperless“
‚Schleife
For Each objMail In Outlook.ActiveExplorer.Selection
With objMail
‚Mails auf vorh. Anlagen prüfen
intAnlagen = .Attachments.Count
If intAnlagen > 0 Then
For i = 1 To intAnlagen
‚Anlagen im vordefinierten Verzeichnis sichern
.Attachments.Item(i).SaveAsFile strPath & „\“ & Format(.ReceivedTime, „yyyy-mm-dd_hh-mm“) & “ “ & .Attachments.Item(i).FileName
Next i
End If
End With
Next objMail
End Sub
Bin leider kein VBA-Fachmensch.
Vielen Dank und Gruß
Adrian
Gefällt mirGefällt mir
Hallo Adrian,
die Zeile kommt vor
.Attachments.Item(i).SaveAsFile strPath & „\“ & Format(.ReceivedTime, „yyyy-mm-dd_hh-mm“) & “ “ & .Attachments.Item(i).FileName
und danach muss noch ein
End If
hin. Damit sollte es klappen.
lg
Katharina
Gefällt mirGefällt mir
Hallo Katharina,
das habe ich so umgesetzt:
Sub Anlage_verschieben()
Dim strPath As String
Dim objMail As MailItem
Dim intAnlagen As Integer, i As Integer
On Error Resume Next
‚Pfad zu meinem Ordner
strPath = „L:\AGCS\GER\Claims\LIAB\Muenchen\HIRN\Paperless“
‚Schleife
For Each objMail In Outlook.ActiveExplorer.Selection
With objMail
‚Mails auf vorh. Anlagen prüfen
intAnlagen = .Attachments.Count
If intAnlagen > 0 Then
For i = 1 To intAnlagen
‚Bilder auschließen
If Right(.Attachments.Item(i).DisplayName, 3) „jpg“ and Right(.Attachments.Item(i).DisplayName, 3) „bmp“ and .Attachments.Item(i).Size < 1000 Then
End If
'Anlagen im vordefinierten Verzeichnis sichern
.Attachments.Item(i).SaveAsFile strPath & "\" & Format(.ReceivedTime, "yyyy-mm-dd_hh-mm") & " " & .Attachments.Item(i).FileName
Next i
End If
End With
Next objMail
End Sub
Ich erhalte nun den Fehler "Fehler beim Kompilieren, Erwartet: GoTo oder Then"
Was mache ich hier falsch?
Gruß
Adrian
Gefällt mirGefällt mir
For i = 1 To intAnlagen
‚Bilder auschließen
If Right(.Attachments.Item(i).DisplayName, 3) „jpg“ and Right(.Attachments.Item(i).DisplayName, 3) „bmp“ and .Attachments.Item(i).Size < 1000 Then
'Anlagen im vordefinierten Verzeichnis sichern
.Attachments.Item(i).SaveAsFile strPath & "\" & Format(.ReceivedTime, "yyyy-mm-dd_hh-mm") & " " & .Attachments.Item(i).FileName
End If
Next i
zwei Tippfehler waren drin, und das End If gehört weiter nach unten – nach dem SaveAsFile
So sollte es passen.
lg
Gefällt mirGefällt mir
Hi Katharina,
ich habe Deine Anpassungen übernommen, allerdings passiert nun leider gar nichts, d.h. es erscheint weder eine Fehlermeldung, noch werden Dateien gespeichert:
Sub Anlage_verschieben_Test()
Dim strPath As String
Dim objMail As MailItem
Dim intAnlagen As Integer, i As Integer
On Error Resume Next
‚Pfad zu meinem Ordner
strPath = „L:\AGCS\GER\Claims\LIAB\Muenchen\HIRN\Paperless“
‚Schleife
For Each objMail In Outlook.ActiveExplorer.Selection
With objMail
‚Mails auf vorh. Anlagen prüfen
intAnlagen = .Attachments.Count
If intAnlagen > 0 Then
For i = 1 To intAnlagen
‚Bilder auschließen
If Right(.Attachments.Item(i).DisplayName, 3) = „jpg“ And Right(.Attachments.Item(i).DisplayName, 3) = „bmp“ And .Attachments.Item(i).Size < 5 Then
'Anlagen im vordefinierten Verzeichnis sichern
.Attachments.Item(i).SaveAsFile strPath & "\" & Format(.ReceivedTime, "yyyy-mm-dd_hh-mm") & " " & .Attachments.Item(i).FileName
End If
Next i
End If
End With
Next objMail
End Sub
Gefällt mirGefällt mir
For i = 1 To intAnlagen
‚Bilder auschließen
If Right(.Attachments.Item(i).DisplayName, 3) „jpg“ and Right(.Attachments.Item(i).DisplayName, 3) „bmp“ and .Attachments.Item(i).Size < 1000 Then
'Anlagen im vordefinierten Verzeichnis sichern
.Attachments.Item(i).SaveAsFile strPath & "\" & Format(.ReceivedTime, "yyyy-mm-dd_hh-mm") & " " & .Attachments.Item(i).FileName
End If
Next i
Irgendwie hat der Editor das falsch korrigiert – da war auf einmal = statt
Gefällt mirGefällt mir
Leider wird weiterhin keine Datei abgespeichert.
Gruß
Adrian
Gefällt mirGefällt mir
Hallo Katharina,
ich habe das Script etwas umgewandelt,
allerdings kommt bei mir Laufzeitfehler ’13‘ Typen unverträglich.
Der Debugger zeigt den Fehler bei Next myItem, obwohl ich dort nichts verändert habe
Public Sub Inbox_Anhaenge_handeln()
Dim myItem As Outlook.MailItem
Dim mAtts As Attachments
Dim mAtt As Attachment
Dim olNamespace As Outlook.NameSpace
Dim olFolder As Outlook.Folder
Dim olItems As Outlook.Items
Set olNamespace = GetNamespace(„MAPI“)
Set olFolder = olNamespace.GetDefaultFolder(olFolderInbox)
Set olItems = olFolder.Items
For Each myItem In olItems
Set mAtts = myItem.Attachments
If mAtts.Count = 1 Then
Set mAtt = mAtts(1)
If LCase(Right(mAtt.FileName, 4)) = „.pdf“ Then
myItem.Categories = „Grüne Kategorie“
Else
myItem.Categories = „Gelbe Kategorie“
End If
ElseIf mAtts.Count > 1 Then
myItem.Categories = „Rote Kategorie“
Else
myItem.Categories = „Fehlerhafte Bestellung“
End If
Next myItem
Set mAtt = Nothing
Set mAtts = Nothing
Set myItem = Nothing
Set olItems = Nothing
Set olFolder = Nothing
Set olNamespace = Nothing
End Sub
Mit freundlichen Grüßen
Steve
Gefällt mirGefällt mir
Hallo Steve,
das könnt‘ jetzt daran liegen, dass in dem Ordner nicht nur Elemente vom Typ mailItem liegen – was helfen kann, ist
Dim myItem As Object
Damit ist das dann „allgemeiner“ definiert – und mit ein bisschen Glück läuft es trotzdem durch 🙂
Viel Erfolg!
Katharina
Gefällt mirGefällt mir
Hallo,
besten Dank für diese Lösung, das ist das, was ich grad gebrauchen kann.
Ich habe täglich Dateien zu archivieren, die von einem bestimmten Sender kommen, somit liese sich das Script von ganz von Anfang dieser Diskussion perfekt dafür nutzen.
Ich kann mit einer Regel dieses Script auswählen und es hat funktioniert.
Die Regel schaut bei eintreffenden Mails nach dem Sendernamen, soll dann die Mailanhänge speichern und dann die Mail verschieben.
Das hat aber leider nur einmal funktioniert, ich bekomme das ein zweites Mal nicht zum Laufen.
Wenn ich die Mail im Posteingang lasse und die Regel jetzt anwenden-Funktion benutze, macht die Regelautomatik alles mit der Mail, was ich will und einstellen kann, nur die Bilder werden nicht mehr kopiert.
Verwendet habe ich:
Public Sub Anhaenge_handeln(myItem As Outlook.MailItem)
Dim mAtts As Attachments
Dim mAtt As Attachment
Set mAtts = myItem.Attachments
While mAtts.Count > 0
Set mAtt = mAtts(1)
mAtt.SaveAsFile „C:\temp\“ & mAtt.DisplayName
mAtts.Remove 1
Wend
End Sub
Wäre lieb, wenn mir da nochmal geholfen werden könnte.
Habe selbst schon einige Programmiersprachen betrieben (ist lange her), somit sind mir die Logiken durchaus geläufig, aber VB habe ich nie gemacht.
Wo kann der Fehler liegen?
Gefällt mirGefällt mir
Hallo Jürgen,
das ist jetzt ein bissl Kristallkugelschauen … vielleicht sind die Bilder keine „echten“ Anhänge? Der Krampf mit allen Mails ist der, dass unterschiedliche Programme (allen voran Lotus Notes bzw. Outlook) unterschiedlich mit diversen Objekten umgehen. Da wird eingebettet, angehängt, … jedes Programm ganz, wie es grad lustig ist 😦
Kannst mir aber gern so ein Mail einmal weiterleiten (katharina.schwarzer@soprani.at), und ich schau hinein, was da passiert.
Herzliche Sonntagsgrüße
Katharina
Gefällt mirGefällt mir
Hallo,
danke für die Meldung. Ist keine Selbstverständlichkeit.
Die Anhänge in den Mails sind ganz normale jpg-Bilder, die als Anhang angehängt sind.
Also ganz einfache Dateien, die mit Namensformat (besteht aus Seriennummer, Datum und Uhrzeit.jpg) aus jeder Mail einfach abspeicherbar wären.
Die Bilder tauchen als Bild nicht in der Mail auf.
Es sind aber pro Mail mehrere Bilder.
Ich leite mal so ein Beispiel weiter.
Es hat einmal funktioniert, mir kommt es so vor, als würde der Zähler für die Anzahl der angehängten Bilder, der anfänglich gesetzt wird, nicht mehr zurückgesetzt, aber das ist mein Eindruck als Laie.
Ich schicke mal so eine Mail und den Scriptcode durch.
Danke schonmal.
Gruß
Jürgen
Gefällt mirGefällt mir
Hallo Jürgen,
Erster Ansatz:
Vor dem End Sub fehlt noch
Set mAtt = Nothing
Set mAtts = Nothing
Sonst werden die Objektvariablen nach erfolgreichem Löschen nicht freigegeben. Ich freu mich, wenn’s damit klappt; wenn nicht, dann such ich gern noch weiter.
lg
Katharina
Gefällt mirGefällt mir
Super Danke! ich hätte hier noch eine Frage!
Wie lassen sich die anhänge mit Absender im Dateinamen abspeichern?
Beispielsweise erhalte ich einige Datenblätter welche ich unter einem bestimmten Ordner ablege. Das hat super mit dem Modul funktioniert. Leider benennen einige Absender die Datenblätter, womit ich dann zahlreiche Datenblätter im Ordner hab – aber nicht weiß vom welchem Absender…
würde mich sehr auf eine Anwort freuen!!! DANKE schon mal
LG, Joy
Gefällt mirGefällt mir
Hallo Joy,
beim Speichern musst du irgendwie matt.Sender hineinverwurschten, z.B.
statt mAtt.SaveAsFile „C:\temp\“ & mAtt.DisplayName
nimmst du
mAtt.SaveAsFile „C:\temp\“ & matt.Sender & „_“ & mAtt.DisplayName
lg
Katharina
Gefällt mirGefällt mir
Vielen Dank Katharina für die rasche Antwort!!!! LG, Joy
Gefällt mirGefällt mir
Hallo Katharina,
ich habe auch ein ‚Problem‘
ich bekomme täglich eine Email mit einem PDF, diese verschiebe ich zur Zeit per Regel in einen Ordner.
nun wollte ich das diese Regel dann auch den Anhang abspeichert. Leider hat zwar das Skript funktioniert O.o aber leider im Falschen Ordner und ich musste 1000+ Dateien per Hand löschen.
Ich denke es liegt an meinen 5 Postfächern die ich habe.
Wie bekomme ich das ‚richtige‘?
und muss ich etwas beachten wegen der Regel? (wegen dem Verschieben der Mail)
Ablauf: Mail kommt in Posteingang (solar@xxx.de) wird verschoben in den Ordner „Solar“
und die PDF soll auf D:\SOLAR\SOLAR_Reports\ abgespeichert werden.
P.S.: hatte es auch schon mal Set olFolder = olNamespace.GetDefaultFolder(olFolderInbox).Folders(„meinUnterordner“) damit probiert, aber irgendwie mag er den ‚Ordner‘ nicht. Wobei ich auch noch denke das er den ‚falschen‘ Posteingang hat.
Public Sub Inbox_Anhaenge_handeln()
Dim myItem As Outlook.MailItem
Dim mAtts As Attachments
Dim mAtt As Attachment
Dim olNamespace As Outlook.NameSpace
Dim olFolder As Outlook.Folder
Dim olItems As Outlook.Items
Set olNamespace = GetNamespace(„MAPI“)
Set olFolder = olNamespace.GetDefaultFolder(olFolderInbox)
Set olItems = olFolder.Items
For Each myItem In olItems
Set mAtts = myItem.Attachments
Dim I As Long
For I = 1 To mAtts.Count
Set mAtt = mAtts(I)
mAtt.SaveAsFile „D:\SOLAR\SOLAR_Reports\“ & mAtt.DisplayName
Next I
Next myItem
Set mAtt = Nothing
Set mAtts = Nothing
Set myItem = Nothing
Set olItems = Nothing
Set olFolder = Nothing
Set olNamespace = Nothing
End Sub
würde mich über Hilfe sehr freuen.
Mfg heiko
Gefällt mirGefällt mir
Hallo,
ganz Vergessen, es handelt sich um Outlook 2016
MfG Heiko
Gefällt mirGefällt mir
Hallo Heiko,
wo sind die Anhänge denn gelandet? Aus welchem Ordner müsstest du da Kopien löschen? Das kann ich noch nicht ganz nachvollziehen.
An sich dürfte das Problem im Aufrufen stecken, da hast du wahrscheinlich recht. Das Skript arbeitet mit allen Mails, die im Posteingang des Standardpostfaches liegen. Wenn das Mail einmal verschoben ist, dann liegt es ja nicht mehr im Posteingang, sondern in „solar“, und darauf greift das Skript nicht zu. Ist das nun das Problem? Dass gar keine Anhänge mehr abgelegt werden?
Irgendwie sind das widersprüchliche Fehlerbeschreibungen, ich brauch noch mehr Info, damit ich dir gut helfen kann.
lg
Katharina
Gefällt mirGefällt mir
Halllo,
ich habe das Script einmal ausgeführt um es zu testen. (gab am Anfang Probleme, wegen den „)
Nachdem das Script einmal durchgelaufen ist, sind alle Anhänge im richtigen Ordner gelandet ABER vom falschen Posteingang (Email Acc)
Es wurden alle Anhänge meines ‚Haupt’Email Accounts genommen.
das script soll mit der Regel (Mail kommt, verschieben in Solar und Script) laufen.
P.S. ich denke, das Script ansich funktioniert (so wie ich das gerne hätte) sollte nur auf den ‚richtigen‘ EMail Acc zugreifen „und den richtigen Ordner“ (wie das die Regel abarbeitet weiß ich leider nicht)
Für weitere Fragen stehe ich gerne auch per Tel oder Teamviewer zur Verfügung.
Da ich denke das ist nicht leicht zu beschrieben ist.
Vielen Dank
MfG Heiko
Gefällt mirGefällt mir
wieder was Vergessen.
Es ist nicht ‚im‘ falschen Ordner gelandet
Sondern ‚vom‘ falschen Ordner die Daten gezogen worden O.o
Gefällt mirGefällt mir
Hallo Heiko,
alles klar:
Statt
Set olFolder = olNamespace.GetDefaultFolder(olFolderInbox)
brauchst du
Set olFolder = olNamespace.Folders(„solar@xxx.de“).Folders(„Solar“)
Damit ist der zu durchsuchende Ordner der Unterordner „Solar“ des Postfachs „solar@xxx.de“ und nicht mehr der Standard-Posteingangsordner.
lg und ein schönes Wochenende
Katharina
Gefällt mirGefällt mir
Hallo Katharina,
Vielen Dank für die schnelle Antwort.
Leider klappt es nicht.
ich kenne mich mit VBA leider gar nicht aus und weiß gerade nicht wo der Fehler liegt.
ich kann nur soviel Sagen das beim Debuggen
Set olFolder = olNamespace.Folders(„solar(spam)@xxx.de“).Folders(„Solar“)
gelb Markiert wird.
wenn ich den Ordner Solar anklicke und dann auf Eigenschaften kommt das
\\solar(spam)@xxx.de\Posteingang
hab ich hier einen ‚denkfehler‘?
würde mich über eine Antwort sehr freuen und wünsche ein schönes Wochenende.
MfG Heiko
Gefällt mirGefällt mir
Hallo Katharina,
ich habe das Problem das bei mir das einfache (Standard-)Skript von Dir grundsätzlich funktioniert, aber nur einmal. D.h. bei der ersten Mail wird der Anhang gespeichert, danach nicht mehr (auch nicht neue Mail mit unterschiedlichem Anhang). Erst wenn ich eine neue Regel mit einem analogen Skript (unter neuem Namen) definiere, wird wieder genau 1-mal abgespeichert und danach nicht mehr. Im Trust-Center habe ich testweise alle aktiviert.
Zusätzlich bekomme ich Skript ausführen unter Win 7 trotz gesetztem Registrykey nicht angeboten, auf einem anderen PC mit Win 10 jedoch schon. Beides Mal wird Outlook 2016 eingesetzt.
Über eine Antwort wüde ich mich freuen.
MfG Sascha
Gefällt mirGefällt mir
Hallo Katharina,
wir bekommen regelmäßig E-Mails, die als Anhang eine oder mehrere weitere E-Mails haben, in denen sich wiederrum jeweils eine PDF-Datei als Anhang befindet. Gibt es eine Möglichkeit, dass man über ein Makro die „Basis-E-Mail“ auswählen und dann per Knopfdruck die PDFs aus der „zweiten Reihe“ in einen Order speichern lassen kann?
Das würde uns sehr helfen denn ansonsten artet das immer in einer langwierigen Klickerei aus um sich alle PDFs anzuschauen.
Danke!
Viele Grüße
Carsten
Gefällt mirGefällt mir
Ist fertig gebastelt – am Montag wird’s veröffentlicht: https://wordpress.com/post/blog.soprani.at/12306
Gefällt mirGefällt 1 Person
Pingback: #Outlook #Anhänge von Anhängen speichern #jöeineRekursion | Soprani Software
Hallo Katharina, -seit nunmehr 3 Monaten widme ich mich nun diesem Thema immer bei neuen gut gelaunten Anläufen und zwischenzeitlich auch neuem System aber das Anhang-Abspeichern Tool will einfach nicht. Nachdem ich nun am neuen Rechner zuerst einmal in der Registry die Scriptmöglichkeot überhaupt aktivieren musste und auch unterschiedliche VBA Programme hierzu aus dem Netz ausprobiert habe liegt nun der Verdacht nahe, dass VBA-Regeln schlichtweg nicht in Outlook einfach so ausgeführt bzw. einfach ignoriert werden. Ich stopere im Netz hierzu tats. über veschiedene Einträge z.B Trust Center etc. aber wirklich fündig und funktional wird es nicht. Meine eigentliche Frage nach alle der Prozedur zu einem eigentlich doch recht frommen Wunsch: KANN es sein, dass in Outlook irgendwo das VBA Script noch zusätzlich aktiviert oder eine Sicherheitsstufe hierzu reduziert werden muss damit das Script bzw. die Regel letztendlich auch ausgeführt wird??? „normal angelegte“ Regeln hingegen laufen tadellos.
DANKE für Deine Einsätze hier. Normal ist das Arrangement hier nämlich nicht!!
Gefällt mirGefällt mir
Hallo Andi,
was hast du denn in DATEI > Optionen > Trust Center > Einstellungen für das Trust Center > Makrosicherheit eingestellt? Und: ist das dein Rechner oder ein Firmenrechner, über den du nicht die volle Kontrolle hast?
lg Katharina
Gefällt mirGefällt mir
hallo Katharina, -vielen vielen Dank für die Rückmeldung. Separat eingestellt habe ich dann dort nichts: es ist „Benachrichtigungen für digital signierte Makros . Alle anderen Makros sind deaktiviert“ eingestellt. Unter Add-Ins ist dann noch der weitere Eintrag deaktiviert.
Zu Frage zwei: Es ist mein eigener Firmenrechner…..- als Inhaber denke ich habe ich doch hoffentlich alle Rechte seitens des EDV`lers erhalten.
Gefällt mirGefällt mir
Ok – dein Makro ist wsl nicht digital signiert 🙂 Probier einmal „Benachrichtigung für alle Makros“. Nach dem Neustart von Outlook oder spätestens beim ersten Aufruf des Makros kommt dann (hoffentlich) eine Frage, ob du das wirklich ausführen möchtest – JA! NATÜRLICH! Es ist dein EIGENES Makro!
(Die Sicherheitseinstellungen können schon nervig sein 😦 )
Gefällt mirGefällt mir
YEAH!!!!!! DAS wars!!!!! Vielen lieben Dank- das wird meinen handwerklichen Büroalltag massiv beschleunigen und vor Allem auch fehlerfreier gestalten! Vielen vielen Dank nochmal! 🙂
Gefällt mirGefällt 1 Person
Hallo Katharina: es funzt soweit das Allermeiste aber ich stelle eben fest dass auch Outlook mit definierten Bedingungen mogelt: eine Regel lautet:
nach dem Senden einer Nachricht mit „Rechnung“ im Betreff und mit einer Anlage mich benachrichtigen wenn sie gelesen wurde und diese (zusätzlich) an „emailadresse“ senden und eine Kopie davon in den Ordner xxx verschieben.
zugegeben hat jetzt nur am Rande mit diesem Thread zu tun aber Fakt ist eben, dass Outlook die Bedingung „mit einer Anlage“ schlichtweg ignoriert. Er führt die Regel auch aus wenn keine Anlage dabei ist was leider falsch ist…. Kann man hier Abhilfe schaffen?
Gefällt mirGefällt mir
Hallo Katharina,
es iss bisi Zeit vergangen, da ich keine Zeit und Lust hatte 😉
aber mein Problem damals ist/war noch nicht gelöst:
Deswegen noch mal kurz die Frage könntest Du dir das bitte noch mal anschauen.
ursprüngliches Thema vom 3. November 2017 um 22:19
ich habe nun das Postfach auf Set olFolder = olNamespace.Folders(„solar@xxx.de“).Folders(„Solar“) geändert, also die (spam) rausgenommen.
Nun scheint es aber ein anderes Problem zu geben:
Set olNamespace = GetNamespace(„MAPI“)
Laufzeitfehler 13 ( typen unverträglichkeit )
und nur kurz noch zur Info, Post kommt mit PDF im Posteingang „solar@xxx.de“ wird in den Ordner „Solar“ geschoben und hier soll dann die PDF die Kopie abgeben (oder dann halt nacheinander in der Regel)
würde mich über eine kurze Info sehr freuen.
Vielen Dank im voraus
MfG Heiko
Gefällt mirGefällt mir
TeamViewer wär super – morgen früh? Gegen 08:00? Mir ist das zu kristallkugelig so.
lg
Katharina
Gefällt mirGefällt mir
Hallo
teamviewer ist kein Problem. Aber leider bin ich von 7 bis 15(30) auf der Arbeit.
Wäre auch nach 16 Uhr möglich?
Mfg Heiko
Gefällt mirGefällt mir
16:00 wär fein – nachher muss ich noch zu einem Termin.
Gefällt mirGefällt mir
Hallo Katharina,
kannst Du mir bitte noch eine Mail schreiben, das ich Dir dann meine ID und PW übermitteln kann.
Vielen Dank.
mfg Heiko
Gefällt mirGefällt mir
Verdammt O.o
habs gefunden (auf der HP), ich melde mich später
Gefällt mirGefällt mir
Hallo, leider klappt irgendetwas bei meiner Einrichtung der Funktion „Anhänge in Ordner“ nicht. Ich verwende Office 2013. Wie kann ich die Info über meine Installation als Anlage senden (pdf-Abbilder). mfg Detlev
Gefällt mirGefällt mir
Hallo Detlev,
per E-mail an katharina.schwarzer@soprani.at ist ein guter Weg, mich zu erreichen. Mal sehen, was da klemmt.
lg
Gefällt mirGefällt mir
Hi Katharina,
das hat mir alles sehr weiter geholfen. Ich kann nun alle PDFs in einem Ordner in einem Rutsch abspeichern. Auch kann ich eine Regel erstellen, die das anhängende PDF abspeichert.
ABER was ich nicht hinbekomme: ich habe immer wieder Mails, die sich einer festen Regel entziehen, da würde ich trotzdem möglichst auf Knopfdruck die Anhänge sichern. Aber ich kann ein Makro, das einen Paramter erwartet, nicht einer Tastenkombination oder einem Menübefehl zuweisen. Hast Du eine Idee, woran das liegt?
Gefällt mirGefällt mir
Hallo Michael,
irgendwo in den Kommentaren steht schon eine Variante, die „auf Knopfdruck“ funktioniert – beides gleichzeitig funktioniert deswegen nicht, weil man beim Knopfdruck irgendwie dazusagen muss „das, was gerade markiert ist“ (man könnte ja auch ganz was anderes meinen), bei der Regel läuft das ein bisschen anders.
Schau mal, ob du damit eine Lösung findest, wenn nicht, dann meld dich gerne noch einmal.
lg
Gefällt mirGefällt mir
Hallo
Gibt es eine möglichkeit im Script gleich die Dateiendung zu ändern?
Ich bekomme regelmäßig x.htm Dateien. Diese enthalten Tabellen und lassen sich ohne probleme einfach umbenennen in .xls.
Ich habe oft das
Name „Pfad\x.htm“ as „Pfad\x.xls“
Nur funktioniert es nicht wenn ich das mit in den Sub einschreibe.
Alternativ könnte auch der Ganze Dateiname anders sein. Da ich die Datei sowieso immer überschreiben lasse, wäre das nicht schlimm.
Gefällt mirGefällt mir
Hallo Toni,
dazu muss
mAtt.SaveAsFile „C:\meinSpeicherort\“ & mAtt.DisplayName
geändert werden auf
mAtt.SaveAsFile „C:\meinSpeicherort\“ & Left(mAtt.DisplayName, Len(mAtt.DisplayName)-3) & „xls“
lg
Katharina
Gefällt mirGefällt mir
Hi Danke
Funktioniert echt super. Nur wollte ich jetzt noch das Datum und die Uhrzeit einfügen.
Das Format(.ReceivedTime …. Funktioniert garnicht.
Wenn ich stattdessen Date nehme, geht es zwar aber die Uhrzeit wird als 0 wiedergegeben.
Auch wenn ich die Uhrzeit mit N und h versuche geht es nicht.
While mAtts.Count > 0
Set mAtt = mAtts(1)
mAtt.SaveAsFile „L:\13 SCHICHTÜBERGABE\“ & Format(Date, „yyyy – mm – dd – hh – mm „) & Left(mAtt.DisplayName, Len(mAtt.DisplayName) – 3) & „xls“
mAtts.Remove 1
Wend
Wie kann ich das Datum aktiv einbinden?
Gefällt mirGefällt mir
Hallo Toni,
du musst statt Date die Funktion Now nehmen. Also
Format(Now, „yyyy – mm – dd – hh – mm „)
Dann klappt’s 🙂
lg Katharina
Gefällt mirGefällt mir
Hallo,
ich finde die Ihre VBA-Skript zum Ausführen einer Datei super.
Jedoch habe ich bei meinem Outlook nicht die Möglichkeit den Punkt „Regel auf von mir empfangene Nachrichten anwenden“ auszuwählen, sondern nur „Nachrichten bei Ankunft prüfen“
Gibt es eine Möglichkeit diese Regel anders festzulegen?
PS
Ich habe es mit dieser anderen Regeleigenschaft ausprobiert und es hat einmal funktioniert und nun leider nicht mehr….
Wir möchten einen Infoscreen einrichten, der automatisch den gesendeten Dateianhang in einem bestimmetn Ordner ablegt.
Vielen Dank für die Hilfe vorab!
Gefällt mirGefällt mir
Hallo Holger,
Ihr Makro ist wsl nicht digital signiert Probieren Sie einmal „Benachrichtigung für alle Makros“. Nach dem Neustart von Outlook oder spätestens beim ersten Aufruf des Makros kommt dann (hoffentlich) eine Frage, ob Sie das wirklich ausführen möchten – JA! NATÜRLICH! Es ist Ihr EIGENES Makro!
(Die Sicherheitseinstellungen können schon nervig sein )
Gefällt mirGefällt mir
Hallo Katharina,
Makrosicherheit war die Lösung.
EXTRAS-> Vertauensstellungscenter –> Makrosicherheit
Habe ich auf keine Sicherheitsüberprüfung gestellt, weil ich ja nur dieses eine Makro habe…
Vielen herzlichen Dank!!!
Gefällt mirGefällt mir
Hallo Katharina,
ich habe hier voller Hoffung ganz viel Hilfe im Breich Makro / Script gelesen!!
Kannst du mir bitte auch helfen?!
Ich habe ein Script im Kombination mit einer Regel laufen und dieser Sprict läuft auch fehlerfrei, aber er speichert mir das PDF immer num mit dem Dateinamen und die wichtigen Infos stehen ein uns im Email Betreff.
Könntest du mir den Script so umschreiben, dass er beim speichern nicht den Dateinamen nimmt sondern die Betreffzeile zur die Datei:
Sub RG_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:\Speicherort\“
‚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
Vielen Dank im Voraus
Anita
Gefällt mirGefällt mir
Hallo Katharina,
ich erhalte immer E-Mail mit Outlook Item. In dieser angehängten E-Mail ist die benötigte PDF Datei. Wie muss ich das Skript anpasse. damit er mir die PDF rauszieht und speichert?
Vielen Dank für deine Arbeit und Hilfe.
Michael
Gefällt mirGefällt mir
Hallo Michael,
in Kürze: die angehängten Mails erkennst du an der Endung .msg – und jetzt wird’s rekursiv (hab ich jetzt mangels Zeit nicht getestet):
Public Sub Anhaenge_handeln(myItem As Outlook.MailItem)
Dim mAtts As Attachments
Dim mAtt As Attachment
Set mAtts = myItem.Attachments
While mAtts.Count > 0
Set mAtt = mAtts(1)
If Right(mAtt.Name,4) = „.msg“ Then
Call Anhaenge_handeln(mAtt)
Else
mAtt.SaveAsFile „C:\meinSpeicherort\“ & mAtt.DisplayName
End If
mAtts.Remove 1
Wend
End Sub
Gefällt mirGefällt mir