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

Frage Entwicklung VB for Applications

GELÖST

Outlook VBA - Anhang autom. speichern

Mitglied: sokraTonis

sokraTonis (Level 1) - Jetzt verbinden

31.07.2014, aktualisiert 14:09 Uhr, 3856 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
Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 1 TagLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 2 TagenTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Sicherheit

Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen

Information von Frank vor 2 TagenSicherheit12 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...

Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 2 TagenSicherheit9 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Heiß diskutierte Inhalte
Monitoring
VPN Performance Zyxel-Fritte
gelöst Frage von HenereMonitoring13 Kommentare

Servus, nachdem ihr mir ja schon so gut helfen konntet, was das VPN zwischen Zyxel USG60W und Fritte 7490 ...

Batch & Shell
Meltdown Microsoft Prüf Script - .zip Datei leider leer
gelöst Frage von MasterBlaster88Batch & Shell13 Kommentare

Hallo zusammen, ich patche gerade unsere Windows Server bzgl. der Meltdown Lücke. Patch vorhanden, Reg Keys gesetzt Um das ...

Batch & Shell
Shell-Skript - Syntax error: Unterminated quoted string
Frage von newit1Batch & Shell13 Kommentare

Hallo Ich schreibe ein Skript das eine CSV-Datei in eine mySQL Datenbank schieben soll. Bekomme nach start des Skrips ...

Sicherheit
Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen
Information von FrankSicherheit12 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...