Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

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

Frage Entwicklung VB for Applications

Mitglied: sokraTonis

sokraTonis (Level 1) - Jetzt verbinden

31.07.2014, aktualisiert 14:09 Uhr, 3652 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
gelöst Outlook vba Email Anhang in Ordner speichern (3)

Frage von Daywalkercxp zum Thema Outlook & Mail ...

Microsoft Office
gelöst VBA Excel Tabellenblätter als PDF speichern (8)

Frage von Florian86 zum Thema Microsoft Office ...

Outlook & Mail
gelöst Outlook blockiert PDF Anhänge (18)

Frage von jojo0411 zum Thema Outlook & Mail ...

VB for Applications
gelöst VBA-Makro verschwindet nach Speichern (5)

Frage von lupi1989 zum Thema VB for Applications ...

Neue Wissensbeiträge
Viren und Trojaner

Neues Botnetz über IoT-Geräte

Information von certifiedit.net zum Thema Viren und Trojaner ...

Ubuntu

Ubuntu 17.10 steht zum Download bereit

(3)

Information von Frank zum Thema Ubuntu ...

Datenschutz

Autofahrer-Pranger - Bewertungsportal illegal

(8)

Information von BassFishFox zum Thema Datenschutz ...

Windows 10

Neues Win10 Funktionsupdate verbuggt RemoteApp

(8)

Information von thomasreischer zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Router & Routing
Externe IP von innen erreichbar machen (15)

Frage von Windows10Gegner zum Thema Router & Routing ...

Windows Installation
Windows 10 neu installieren (12)

Frage von imebro zum Thema Windows Installation ...

Windows Server
Frage zu Server Rack (11)

Frage von rainergugus zum Thema Windows Server ...