Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Outlook VBA - Anhang autom. speichern

Mitglied: sokraTonis

sokraTonis (Level 1) - Jetzt verbinden

31.07.2014, aktualisiert 14:09 Uhr, 4120 Aufrufe, 8 Kommentare, 4 Danke

Hallo,

ich bekomme an eine bestimmte E-Mail-Adresse immer wieder Nachrichten mit einem Anhang. Der Name vom Anhang ist immer gleich. Nun soll dieser Anhang automatisch in einen Ordner abgelegt werden. Dort holt ihn sich ein weiteres Programm ab und verarbeitet die Datei.

Ich habe in Outlook ein Script erstellt, welches bei Erhalt einer Nachricht an diese E-Mail-Adresse in einen bestimmten Outlook-Ordner verschiebt, dann das Script ausführt und im Anschluss die Nachricht auf gelesen setzt.

Jetzt das Script:

Sub Anlagen_Speichern(OlMail As MailItem)

Dim Anlagen As Attachments
Dim i As Integer
Dim Ziel As String
Dim Ziel2 As String
Dim ErrMsg As String

'Primärer Zielpfad'

On Error GoTo Errorhandler

Ziel = "C:\Sandbox\EDI\"

einsziel:

Set Anlagen = OlMail.Attachments
If Anlagen > 0 Then
For i = 1 To Anlagen.Count
Anlagen.Item(i).SaveAsFile Ziel & "\" & Anlagen.Item(i).FileName
Next i
Else: GoTo Errorhandler
MsgBox "Der Anhang wurde erfolgreich im primären Ziel gespeichert."

Exit Sub

'Sekundärer Zielpfad'

zweiziel:

Err.Clear
On Error GoTo Errorhandler

Ziel2 = "C:\Sandbox\EDI_manuell\"

Set Anlagen = OlMail.Attachments
If Anlagen > 0 Then
For i = 1 To Anlagen.Count
Anlagen.Item(i).SaveAsFile Ziel2 & "\" & Anlagen.Item(i).FileName
Next i
Else: GoTo Errorhandler
MsgBox "Der Anhang wurde erfolgreich im sekundären Ziel gespeichert. Bitte prüfen Sie das primäre Verzeichnis."

Exit Sub

'Fehlerbehandlung'
Errorhandler:
Select Case Err.Number
Case -2147024893:
ErrMsg = "Der primäre Zielpfad ist nicht vorhanden. Es wird versucht im sekundären Zielpfad zu speichern."
Result = MsgBox(ErrMsg, vbOKOnly)
If Result = vbOK Then GoTo zweiziel

Case 5:
ErrMsg = "Es ist kein Anhang vorhanden. Die E-Mail wird nun geöffnet."
Result = MsgBox(ErrMsg, vbOKOnly)
If Result = vbOK Then OlMail.Display

Case Else:
MsgBox "Error # " & Err.Number & ":" & Error(Err.Number)

End Select

End If
End If
End Sub

Nun ist folgendes mein Ziel mit diesem Script:
- E-Mail soll auf Anhang geprüft werden. Ist ein Anhang da, soll er im Pfad gespeichert werden. Ist der Pfad nicht verfügbar, weiche auf sekundären Pfad aus. Ist kein Anhang dabei, soll die E-Mail geöffnet werden.

Problem:
- Im aktuellen Script wird jede E-Mail, egal ob Anhang oder nicht, an Case 5 im Errorhandler geleitet.

Hinweis:
- Entferne ich If Anlagen > 0 Then funktioniert es. Allerdings wird dann nicht mehr geprüft ob ein Anhang verfügbar ist.

Wo ist mein Fehler?
Mitglied: emeriks
31.07.2014 um 10:59 Uhr
Hi.
ich glaube, das muss lauten:

If Anlagen.Count > 0 Then

E.
Bitte warten ..
Mitglied: sokraTonis
31.07.2014, aktualisiert um 11:11 Uhr
Hallo,

änderung erfolgt. Jetzt tritt folgendes auf:

- mit Anhang wird die E-Mail ohne Benachrichtigung gespeichert
- ohne Anhang erscheint keine Fehlermeldung

//EDITIERT:

Im Script habe ich noch folgendes geändert:

Errorhandler:
Case 0:
ErrMsg = "Es ist kein Anhang vorhanden. Die E-Mail wird nun geöffnet."
Result = MsgBox(ErrMsg, vbOKOnly)
If Result = vbOK Then OlMail.Display

Nun ist es so:
- mit Anhang wird die E-Mail ohne Benachrichtigung gespeichert
- ohne Anhang erscheint die gewünschte Fehlermeldung
Bitte warten ..
Mitglied: napperman
31.07.2014 um 11:12 Uhr
Moin,

Versuchmal die Anlagen vor dem If zu zählen und dann an den If-Block zu übergeben
Anlagen = .Attachments.Count
if Anlagen > 0 .....
Bitte warten ..
Mitglied: sokraTonis
31.07.2014, aktualisiert um 11:19 Uhr
Ich habe Set Anlagen = OlMail.Attachments entfernt und dafür Anlagen = .Attachments.Count eingesetzt. Beim Kompilieren erscheint dann:

Unzulässiger oder nicht ausreichend definierter Verweis

Setze ich OlMail vor .Attachments.Count ein, erscheint dann eine Fehlermeldung beim Erhalt der Nachricht mit Anhang.

//EDITIERT:
Fehlermeldung lautet: Error #91: Objektvariable oder With-Blockvariable nicht festgelegt.
Bitte warten ..
Mitglied: emeriks
31.07.2014 um 11:24 Uhr
For i = 1 To Anlagen.Count

müsset lauten

For i = 0 To Anlagen.Count - 1

E.
Bitte warten ..
Mitglied: sokraTonis
31.07.2014, aktualisiert um 11:31 Uhr
Ändert leider nichts.

Setzte ich Count vor If erscheint die selbe Fehlermeldung mit Code 91.
Setze ich den Count in die If und ändere es auf ... - 1, dann erscheint Error # -2147352567:Array-Index außerhalb des zulässigen Bereichs.
Bitte warten ..
Mitglied: colinardo
LÖSUNG 31.07.2014, aktualisiert um 16:09 Uhr
Moin,
das ganze lässt sich abkürzen ohne das ganze GOTO gedöhns:
01.
Sub AnlagenSpeichern(olMail As MailItem) 
02.
    Dim att As Attachment, fso As Object, ziel As String, ziel1 As String, ziel2 As String 
03.
    Set fso = CreateObject("Scripting.FilesystemObject") 
04.
    ziel1 = "C:\Sandbox\EDI" 
05.
    ziel2 = "C:\Sandbox\EDI_manuell\" 
06.
   
07.
    If olMail.Attachments.Count > 0 Then 
08.
        If Not fso.FolderExists(ziel1) Then 
09.
            If fso.FolderExists(ziel2) Then 
10.
                MsgBox "Ziel 1 ist nicht erreichbar, speichere unter Ziel2!", vbExclamation 
11.
                ziel = ziel2 
12.
            Else 
13.
                MsgBox "Beide Ziele nicht erreichbar!", vbCritical 
14.
                Exit Sub 
15.
            End If 
16.
        Else 
17.
            ziel = ziel1 
18.
        End If 
19.
         
20.
        For Each att In olMail.Attachments 
21.
            targetPath = ziel & "\" & att.FileName 
22.
            if not fso.FileExists(targetPath ) then 
23.
               att.SaveAsFile targetPath 
24.
            else 
25.
               if msgbox("Attachment existiert schon im Zielordner: " & targetPath & vbNewline & "Soll es überschrieben werden ?",vbYesNo or vbQuestion) = vbYes then 
26.
                 fso.DeleteFile targetPath, True 
27.
                 att.SaveAsFile targetPath 
28.
               end if 
29.
            end if 
30.
        Next 
31.
    Else 
32.
        MsgBox "Kein Anhang vorhanden! Mail wird nun geöffnet.", vbInformation 
33.
        olMail.Display 
34.
    End If 
35.
End Sub
Du solltest aber wissen, das auch eingebettete HTML-Bilder als Anlagen behandelt und gezählt werden.

Grüße Uwe

p.s. Bitte nutze Code-Tags für deinen Quellcode: <code> Quellcode </code>, ansonsten kommen uns hier eventuell wichtige Sonderzeichen abhanden.
Bitte warten ..
Mitglied: sokraTonis
31.07.2014, aktualisiert um 14:12 Uhr
Hallo Uwe,

vielen Dank für das Script. Es funktioniert soweit. Die entspreche Meldung für eine erfolgreiche Speicherung habe ich noch hinzugefügt.

Die Frage, weshalb mein Script nicht funktioniert, bleibt... .

//EDITIERT:
HTML-Bilder und Co. stören nicht, da die Nachricht keine Signatur aufweist.
Bitte warten ..
Ähnliche Inhalte
Outlook & Mail

Outlook vba Email Anhang in Ordner speichern

gelöst Frage von DaywalkercxpOutlook & Mail3 Kommentare

Liebe Community, Ich bin am verzweifeln, da ich einfach nicht auf die Lösung komme. Daher hoffe ich das es ...

VB for Applications

VBA Outlook - Automatisierte Anhänge - Script erweitern

gelöst Frage von sokraTonisVB for Applications3 Kommentare

Hallo Leute, ich würde mein Script: Sub AnlagenRewe(olMail As MailItem) Dim att As Attachment, fso As Object, ziel As ...

Outlook & Mail

Outlook sperrt Zugriff auf Ordner nach speichern von Anhängen

gelöst Frage von matze91Outlook & Mail1 Kommentar

Hallo Community! Zur Umgebung: - SBS 2008 - Win 7 Clients mit Office 2010 - Speicherung der Dokumente auf ...

Outlook & Mail

Outlook 2010, Anhang per Makro speichern

gelöst Frage von ZunarasOutlook & Mail6 Kommentare

Schönen guten Tag, ich möchte gerne per Knopfdruck die Anhänge einer Mail auf Festplatte speichern. Dazu würde ich gerne ...

Neue Wissensbeiträge
Sicherheit

MikroTik-Router patchen, Schwachstelle wird ausgenutzt

Information von kgborn vor 7 StundenSicherheit

Am 23. April 2018 wurde von Mikrotik ein Security Advisory herausgegeben, welches auf eine Schwachstelle im RouterOS hinwies. Mikrotik ...

Windows 10

Microcode-Updates KB4090007, KB4091663, KB4091664, KB4091666 für Windows 10

Information von kgborn vor 13 StundenWindows 101 Kommentar

Kurze Information für Administratoren von Windows 10-Systemen, die mit neueren Intel CPUs laufen. Microsoft hat zum 23. April 2018 ...

iOS
Updates für Iphone und Co
Information von sabines vor 17 StundeniOS

Gestern abend ist iOS 11.3.1 erschienen, ein kleineres Update, dass einige Lücken schließt und "Lahmlegen" nach einem Display Tausch ...

Windows 7

Windows 7 - Server 2008 R2: Exploit für Total Meltdown verfügbar

Information von kgborn vor 2 TagenWindows 7

Kleine Information für Administratoren, die für die Updates von Windows 7 SP1 und Windows Server 2008 R2 SP1 verantwortlich ...

Heiß diskutierte Inhalte
Batch & Shell
Powershell: Im AD nach Rechnern mit bestimmten IP-Adressen suchen
gelöst Frage von Raven42Batch & Shell36 Kommentare

Hallo zusammen, ich suche nach einer Möglichkeit nach Computern im AD zu suchen , deren IP-Adresse mit 10.11.12. beginnt. ...

C und C++
Frage1 C Programmierung-Makefile Frage2 PHP-Programmierung HTTP-Fehler 404
Frage von KatalinaC und C++34 Kommentare

Hallo, ich habe 2 Fragen, die nichts miteinander zu tun haben aber mit denen ich mich gerade beschäftige: 1. ...

LAN, WAN, Wireless
Watchguard T15 VPN Einrichtung
gelöst Frage von thomasjayLAN, WAN, Wireless25 Kommentare

Hallo zusammen, wir möchten gerne über unsere Watchguard T15 einen VPN-Tunnel (Mobile VPN with IPSec) einrichten! Als Client nutzen ...

Windows Server
Alten DC entfernen
Frage von smartinoWindows Server24 Kommentare

Hallo zusammen, ich habe hier eine Umgebung übernommen und erstmal einen DCDIAG gemacht. Dabei fällt auf, daß eine ganze ...