Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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 2003: Datei aus Mailanhang automatisch in Ordner verschieben oder kopieren

Frage Microsoft Outlook & Mail

Mitglied: Sylvia

Sylvia (Level 1) - Jetzt verbinden

08.01.2007, aktualisiert 23.07.2007, 26862 Aufrufe, 30 Kommentare

Hallo !

ich suche eine Möglichkeit Dateianhänge von Mails direkt in einen Ordner zu verschieben oder zu kopieren. Dies kann ein fixer Ordner sein, muss also nicht bei jeder Mail ein anderer sein.

Beispiel: Mail mit Dateianhang: anhang1.xls.
Dieser soll nun sofort beim Eingang in den Ordner e:\temp\Mailanhänge verschoben oder kopiert werden.

Kennt jemand hier eine Lösungmöglichkeit ?

Ich habe im Outlook nur die Alternative gefunden, die komplette Mails zu verschieben - aber das möchte ich nicht - NUR der Anhang soll verschoben/kopiert werden.

Viele Grüße und Danke schonmal

Sylvia
30 Antworten
Mitglied: Biber
08.01.2007 um 19:30 Uhr
Hallo Sylvia,

das ist recht simpel und auch irgendwo in der VBA-Hilfe unter Outlook selbst ist ein Beispielcode dafür mit dabei (weiß ich, weil ich da mal zufällig darüber gestolpert bin - eben beim Suchen nach allen Schlüsselworten, die mir spontan im Kontext Attachments einfielen, habe ich es nicht gefunden).

Aber auch im Netz gibt es ~zig aufgemotze Varianten davon (siehe Suchmaschine "Outlook Anhänge automatisiert speichern").

Ein halbwegs seriöser, wenn auch ein bisschen übertriebener Schnipsel schient mir dieser zu sein:
How to: Email Anhang automatisch speichern u. umbennen
(Das "Unbennen" ist ein Zitat, keine persönliche Note von mir)

Wenn es klemmt, melde Dich nochmal.

Gruß
Biber
Bitte warten ..
Mitglied: Sylvia
10.01.2007 um 12:33 Uhr
Hallo Biber

danke schön, ich bin wohl etwas blind
Leider funktioniert das Ding nicht bei mir ich habe aber auch keine Ahnung von VB
folgender Code steht in meinem Outlook (Makros beim neustart explizit aktiviert, is ja mein Skript), den Ordner mailanhang habe ich unter E: auf der Festplatte angelegt.

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)

End Sub

Private Sub Application_NewMail()
Dim strNewFolder As String
Dim objPosteingang As MAPIFolder
Dim objNewMail As MailItem
On Error Resume Next
strNewFolder = "E:\mailanhang\" & Format(Date, "ddmmyy")
MkDir strNewFolder
Set objPosteingang = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox)
For Each objNewMail In objPosteingang.Items
With objNewMail
If .UnRead = True Then
intAnlagen = .Attachments.Count
If intAnlagen > 0 Then
For i = 1 To intAnlagen
.Attachments.Item(i).SaveAsFile strNewFolder & "\" & .Attachments.Item(i).FileName
Next i
End If
End If
End With
Next objNewMail
End Sub


Er macht absolut garnichts

Grüsse
Sylvia
Bitte warten ..
Mitglied: Sylvia
10.01.2007 um 12:37 Uhr
kaum hab ichs nochmal getestet nach dem Absenden des Postings, hat er zumindest mal den Ordner angelegt - aber da is nix drin
Ein pdf-Anhang habe ich aber der Mail beigefügt
Bitte warten ..
Mitglied: Biber
10.01.2007 um 13:08 Uhr
Moin Sylvia,
versuch es mal bitte so:
01.
Sub Application_NewMail() 
02.
Dim strNewFolder As String 
03.
Dim objPosteingang As MAPIFolder 
04.
Dim objNewMail As MailItem 
05.
Dim aAttachment As Attachment 
06.
 
07.
strNewFolder = "E:\mailanhang\" & Format(Date, "ddmmyy") 
08.
On Error Resume Next 
09.
MkDir strNewFolder 
10.
Set objPosteingang = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox) 
11.
For Each objNewMail In objPosteingang.Items 
12.
   With objNewMail 
13.
   If .UnRead = True Then 
14.
       intAnlagen = .Attachments.Count 
15.
       If intAnlagen > 0 Then 
16.
           For i = 1 To intAnlagen 
17.
              Set oAttachment = .Attachments.Item(i) 
18.
              oAttachment.SaveAsFile strNewFolder & "\" & oAttachment.FileName 
19.
           Next i 
20.
       End If 
21.
   End If 
22.
   End With 
23.
Next objNewMail 
24.
End Sub
Der Ordner "E:\Mailanhang" MUSS existieren.
( Oder eben vorher mit "MkDir E:\Mailanhang" extra angelegt werden.)

Gruß
Biber
Bitte warten ..
Mitglied: Sylvia
10.01.2007 um 13:47 Uhr
Hallo Biber,

wie gehabt, der ordner 100107 wird angelegt, aber die Datei nicht hereinkopiert/geschoben...


Kann das ein Berechtigungsproblem sein ? Auf den Ordner haben autentifizierte Benutzer zugriff - und admin und system natürlich eh.
Grüsse
Sylvia
Bitte warten ..
Mitglied: Biber
12.01.2007 um 11:36 Uhr
Moin Sylvia,

na ja, was der Fehler ist, erfahren wir eventuell, wenn Du dieses pauschale "On Error Resume Next" mal kurz auskommentierst.
So lässt sich ja nix sehen...

Gruß
Biber
Bitte warten ..
Mitglied: Sylvia
12.01.2007 um 11:57 Uhr
Aha
Nun kommt wenigstens eine Fehlermeldung:
Laufzeitfehler 13: Typen unverträglich

Bei Debuggen wird dann der Eintrag "Next objNewMail" vorletzte Zeile gelb markiert.

Bei einer weiteren Mail kam dann der Fehler:
Laufzeitfehler 75: Fehler beim Zugriff auf Pfad/Datei

Der Debugger steht hier auf "MkDir strNewFolder"

Vielleicht liegt das daran, dass es den Ordner mit dem Namen schon gibt von der Mail vorher ?

Was auch immer das heißt *seufz*
vb is einfach ein Böhmisches Dorf für mich

Hast Du einen Rat ?

Grüsse
Sylvia
Bitte warten ..
Mitglied: Sylvia
12.01.2007 um 12:25 Uhr
Ich habe nun das "MkDir strNewFolder" gelöscht und auch das "& Format(Date, "ddmmyy")" hinter strNewFolder..., ich brauche ja nur einen Ordner wo das alles reinkommt und nicht immer einen neuen Pro Tag.

Der Laufzeitfehler 13 kommt aber nach wie vor..

Grüsse
Sylvia
Bitte warten ..
Mitglied: Biber
12.01.2007 um 13:55 Uhr
Sorry, Sylvia,

das kommt vom schnellen Hingepfusche... bei Gelegenheit zieh ich das mal glatt (oder setze bastla darauf an).

Next Try:
01.
Sub Application_NewMail() 
02.
Dim strNewFolder As String 
03.
Dim objPosteingang As MAPIFolder 
04.
Dim objNewMail As MailItem 
05.
Dim oAttachment As Attachment 
06.
 
07.
strNewFolder = "D:\mailanhang\" & Format(Date, "ddmmyy") 
08.
On Error GoTo check_error 
09.
MkDir strNewFolder 
10.
Back1: 
11.
Set objPosteingang = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox) 
12.
For Each Item In objPosteingang.Items 
13.
  If Item.Class = olMail Then 
14.
   Set objNewMail = Item 
15.
   With objNewMail 
16.
   If .UnRead = True Then 
17.
   
18.
  intanlagen = .Attachments.Count 
19.
  Debug.Print objNewMail & ": "; intanlagen 
20.
  If intanlagen > 0 Then 
21.
     For i = 1 To intanlagen 
22.
        Set oAttachment = .Attachments.Item(i) 
23.
           oAttachment.SaveAsFile strNewFolder & "\" & oAttachment.FileName 
24.
     Next i 
25.
   End If 
26.
End If 
27.
End With 
28.
End If 
29.
Next Item 
30.
 
31.
check_error: 
32.
Debug.Print Err.Number; Err.Description 
33.
If Err.Number = 75 Then ' Fehler beim Zugriff auf Pfad -- ignorieren wir mal 
34.
   Err.Clear 
35.
   GoTo Back1: 
36.
Else 
37.
   Err.Raise Err.Number, Err.Description 
38.
End If 
39.
 
40.
Err.Clear 
41.
Resume Next 
42.
 
43.
End Sub
Eines der Problemchen war, dass bei jedem Item im Posteingang unterstellt wurde, es sei eine Mail.
Bei Terminen oder Lesebestätigungen geht es natürlich in die Grütze....

Schau mal, ob Du ein paar Meter weiter damit kommst...

Gruß
Biber
Bitte warten ..
Mitglied: Sylvia
12.01.2007 um 15:10 Uhr
Vielen Dank !! es tuuuuuuuuuuuuuuuuut
ausser dass das D:\ ein E:\ war, aber das hab ich hinbekommen

Allerdings kommt am Ende noch ein Laufzeitfehler 5: Ungültiger Prozeduraufruf oder ungültiges Argument.

Immerhin speichert er die Datei nun ab

Beim 2. Versuch hat er die Datei nicht mehr gespeichert, ews.htm hab ich sie genannt - aber die telefonbuch.pdf hat er genommen ?

Hast Du noch ne Idee wegen dem Laufzeitfehler ?
Was passiert wenn die Dateien den gleichen Namen haben ?
Kann man als Ordner anstatt den Tag auch nur den Monat nehmen (0107)?

Grüsse Sylvia
Bitte warten ..
Mitglied: Biber
12.01.2007 um 19:11 Uhr
Moin Sylvia,

nur kurz, weil ENDLICH mein Wochenende beginnt:
Hast Du noch ne Idee wegen dem Laufzeitfehler ?
Nicht direkt. Errorcode 5 hat eigentlich schon seit Erfindung der Alufolie die Bedeutung Zugriff verweigert.
Ob das nun bei dieser *.htm bedeutet, dass OL die versucht, als Htm-Seiten - und Unterseiten zu speichern oder da vielleicht noch ein Link auf ein Bildchen aus dem Internet ist.... heb Dir *.htm für später auf.
Was passiert wenn die Dateien den gleichen Namen haben ?
Wer zuletzt kommt, gewinnt.
Kann man als Ordner anstatt den Tag auch nur den Monat nehmen (0107)?
Jein. kannst Du natürlich, aber bei monatsweise oder jahresweise Abspeichern hast Du naturgemäß mehr Kollisionen (gleiche Dateinamen) als beim Speichern in Tages-Ordner.
Ich würde dann den Weg gegen, nicht in ein Tages-Verzeichnis zu speichern, sondern in ein großes Sammelbecken - und diesen Format(date())-String vorne an den Dateinamen dranhängen.
Wenn es sein muss, auch die Uhrzeit dazu.

So, nun bastel mal weiter - wenn ich am Montag aus dem WE zurückkomme, möchte ich hier ein fertiges Musterskript statt dieser zusammengeschroteten Skizze sehen...

Schönes Wochenende
Biber
Bitte warten ..
Mitglied: Sylvia
15.01.2007 um 08:34 Uhr
Guten Morgen
ich hatte auch Wochenende... und hab mir dabei den Kopf zerbrochen wie vb wohl funktionieren mag... leider ergebnislos

Folgender Fehler kommt nun:
Laufzeitfehler 5: Ungültiger Prozeduraufruf oder ungültiges Argument.
Beim Debuggen steht er dann auf "Err.Raise Err.Number, Err.Description"

Die Dateien, diesmal xls und txt, werden aber abgelegt.

Kann man zip-Dateien auch gleich entpackt abspeichern ?

Böhmische Dörfer...


Gibt es Literatur, mit der man sich bissi aufs vb vorbereiten kann - also was leicht verständliches für nen DAU

Grüße
Sylvia
Bitte warten ..
Mitglied: Biber
15.01.2007 um 09:11 Uhr
Moin Sylvia,

Einsteiger-Links zu VBS/Wscript sind schon mehrfach hier im Forum gepostet worden.
Direkt bei M$ findest Du das umfangreiche "Hey, Scripting Guy" -Projekt.

Zu dem albernen Absturz...

So peinlich mir das ist, es könnte etwas besser werden, wenn Du vor der Zeile "check_error:" noch eine Zeile "Exit Sub" einfügst... *schäm*

Gruß
Biber
Bitte warten ..
Mitglied: Sylvia
15.01.2007 um 09:57 Uhr
Es scheint nun etwas besser zu sein

Hast Du wegen dem entpacken noch eine Idee ?
Kann man das gleich in einem Rutsch machen oder lässt man da ab und an ein Skript über den Ordnerinhalt laufen ?

Ich werd mal versuchen, ob ich das Verschieben der Mail in einen E-Mail-Ordner nach dem Abhängen der Datei hinbekomme... *bezweifel*
Aber ein Versuch isses wert....

Grüße
Sylvia
Bitte warten ..
Mitglied: Biber
15.01.2007 um 20:01 Uhr
Moin Sylvie nochmal,
zum Entpacken hast Du zwei oder drei Möglichkeiten:
- entweder über einen vorhandenen Konsolen-Entpacker (pkunzip.exe, 7z.exe . rar.exe..)
Sind allesamt legal und unkompliziert als Download erhältlich
Die könntest Du über "WShell.Run( entpacker.exe entpack-parameter)"
- oder hin und wieder später über einen Entpack-Dienst-Batch auspacken lassen
- oder aber mit einer über "Extras"->"Verweise" mit eingebundenen UnZip-Dll gleich im VBA mit auspacken lassen.
Wenn Du einen der gängigen Zipper (WinZip, WinRar, 7Zip) installiert hast, sollte Dir eine entsprechende Bibliothek mit im Outlook angeboten werden.

Aber zwischendurch mal die Frage: Ist das denn alles sinnvoll... blind jeden Anhang zu entpacken?
Müssen nicht bestimmte Anhänge woanders gesammelt werden?
Reden wir hier von den täglich 5000 gezippt an den HelpDesk gemailten Errorlog-Dateien?
Oder geht es um die zwei elektronischen Grußkarten, die Du am Wochenende gemailt bekommst?
Oder bist Du gar diejenige, die unsere ganzen freiwillig an M$ gesendeten Absturz-Infos lesen soll?

Grüße
Biber
Bitte warten ..
Mitglied: Sylvia
16.01.2007 um 09:16 Uhr
Guten Morgen, Biber

nun, es ist schon sinnvoll, da die Dateien aus dem Ordner dann durch einen Konverter laufen (mscons in csv bzw. xls). Der guckt da in bestimmten Abständen und wandelt die Daten dann um, damit diese dann wieder weiterverarbeitet werden können. Das kanner aber nur mit entpackten Dateien.

Die betreffende Mailadresse wird nur für den Eingang dieser Daten benutzt. Natürlich lauert da ein Antivirus...
Es handelt sich dabei bisher um etwa 250-300 Mails pro Monat (steigend), immer von den gleichen Absendern. Das Monat für Monat von Hand zu machen ist aber recht zeitaufwändig, da muss noch genug von Hand nachbearbeitet werden *seufz*.

Grundsätzlich hab ich verstanden was Du meinst, aber meine Kenntnisse reichen da wohl nicht aus. Ich habe 7z auf meinem Rechner und werde mir das mal anschauen. Wir haben auch noch freie Lizenzen für WinZip. Immerhin habe ich es hinbekommen, den Ordner mit dem namen des jeweiligen Vormonats zu benennen *froi*

Ab und an ist ein VB-Käpsele im Haus, den werde ich dann mal Löchern wegen dem Problem *g*

Vielen Dank für Deine Mühe !!

Grüße
Sylvia
Bitte warten ..
Mitglied: Sylvia
17.01.2007 um 09:59 Uhr
Guten Morgen !

ich hätte da noch ne Frage: Kann mann die Dateien auch abhängig von ihrer Endung (pdf,xls,csv) in verschiedene Ordner kopieren ?

Grüße

Sylvia
Bitte warten ..
Mitglied: bastla
17.01.2007 um 17:23 Uhr
Hallo Sylvia!

Pardon, wenn ich in Euer tête à tête reinplatze, aber da Biber oben ohnehin schon mit meiner Mitwirkung gedroht hatte ...

Du könntest zum Aufteilen der Attachments auf entsprechende Unterordner versuchsweise die "For"-Schleife durch folgende Variante ersetzen:
01.
... 
02.
Set fso = CreateObject("Scripting.FileSystemObject") 
03.
For i = 1 To intanlagen 
04.
	Set oAttachment = .Attachments.Item(i) 
05.
	strFileName = oAttachment.FileName 
06.
	strFileType = "" 
07.
	If InstrRev(strFileName, ".") Then strFileType = LCase(Mid(strFileName, InstrRev(strFileName, "."))) 
08.
	Select Case strFileType 
09.
	Case ".xls" 'Typ mit Kleinbuchstaben angeben 
10.
		strSubFolder = "Excel" 
11.
	Case ".csv" 
12.
		strSubFolder = "CSV" 
13.
	Case Else 
14.
		strSubFolder = "Andere" 
15.
	End Select 
16.
	strSavePath = strNewFolder & "\" & strSubFolder 
17.
	If Not fso.FolderExists(strSavePath) Then fso.CreateFolder(strSavePath) 
18.
	oAttachment.SaveAsFile strSavePath & "\" & oAttachment.FileName 
19.
Next i 
20.
...
Grüße
bastla
Bitte warten ..
Mitglied: Sylvia
18.01.2007 um 11:37 Uhr
Hallo bastla,

da macht doch nichts wenn du dich einmischt, micht freuts und ausserdem ist der Forum doch für alle da.. was wir nicht wollen was in die Öffentlichkeit kommt läuft eh im PN

Vielen Dank für den Tip, das werde ich mal ausprobieren und ggf "aufbohren".
Ich habe keine Ahnung von VB, nur bisi Cobol und PHP, aber ich glaube ich versteh was Du meinst und werd mein Glück versuchen... learning by doing....

Viele Grüße

Sylvia
Bitte warten ..
Mitglied: Sylvia
23.07.2007 um 11:10 Uhr
Hallo Ihr,

es ergab sich mittlerweile einneues Problem - nachdem das Abhängen nun funktioniert hat..

Wie kann ich die Anhänge verschlüsselter Mails abhängen ?

Der zugehörige Schlüssel ist natürlich vorhanden im Outlook/IE

Hat jemand einen Rat ?

Grüße
Sylvia
Bitte warten ..
Mitglied: Saschbert
08.05.2009 um 18:11 Uhr
Hallo,

ich weiß, ein wirklich alter Beitrag, aber er hat mir _sehr_ weitergeholfen. Da auch ich in VBS/VBA nicht fit bin, würde mich noch ein kleines Goodie in diesem Script erfreuen, wenn es möglich ist.

Am Ende der Verarbeitung soll ein Hinweisbox mit einem Text erscheinen (z.B. "Verarbeitung fertig" oder "Alle Anhänge gespeichert").

Hintergrund ist hier:
Ich bekomme mindestens 2x die Woche wirklich vieeeele Mails mit noch mehr Anhängen. Heute waren es 72 Mails mit insgesammt 353 Anhängen (PDF), entspricht 216 MB. Diese Anhänge kommen auf ein Netzlaufwerk, alle in einen Ordner. Im Script legt er sie jedoch erstmal lokal ab, und ich verschiebe sie später, nach Prüfung.

Das Problem:
Wenn ich nun das Makro in Outlook 2k3 starte, dann kommt erstmal die Sanduhr, zwischenzeitlich ist die mal weg, dann wieder da, und ich erkenne nicht wirklich, wann er durch ist. Daher wäre eine Quittierung schön.

Vielen Dank,
Saschbert
Bitte warten ..
Mitglied: bastla
08.05.2009 um 19:48 Uhr
Hallo Saschbert!
Am Ende der Verarbeitung soll ein Hinweisbox mit einem Text erscheinen (z.B. "Verarbeitung fertig" oder "Alle Anhänge gespeichert").
Die dafür nötige Anweisung
MsgBox "Alle Anhänge gespeichert.", vbOKOnly , "Verarbeitung fertig"
könntest Du am Ende des "Hauptprogrammes" = unmittelbar vor der Zeile
check_error:
platzieren.

Grüße
bastla
Bitte warten ..
Mitglied: Saschbert
11.05.2009 um 18:54 Uhr
WOW, super ... einfach spitze! Ich bin super begeistert. Und hey, ich habe es gleich auf den 2. Anhieb hinbekommen, noch eine Abfrage auf die Mailadresse zu bekommen, damit er nicht von allen Mails die Anhänge exportiert.

Nochmals vielen vielen Dank!!!

Gruß
Saschbert


Edith sagt: Der Befehl für die Hinweisbox kommt übrigens nicht direkt über das "check_error:", sondern noch eine Zeile früher vor dem "End Sub" "Exit Sub" (Edith entschuldigt sich ), aber das habe ich mir schon gedacht gehabt. Für alle noch einmal das nun wirklich funktionierende Script, inkl. Hinweis der Fertigstellung und eingeschränkt auf die E-Mails eine Absenders. Zudem habe ich noch eine Zeitvariable in den Ordnernamen eingebaut und die Ordnerbennenung umgetauscht. Hier nun das Script:

01.
Sub Application_NewMail() 
02.
Dim strNewFolder As String 
03.
Dim objPosteingang As MAPIFolder 
04.
Dim objNewMail As MailItem 
05.
Dim oAttachment As Attachment 
06.
 
07.
strNewFolder = "C:\TEMP\" & Format(Date, "yyyymmdd") & "-" & Format(Time, "hhmm") & "_Scandaten" 'Hier könnte die Benennung auch getauscht werden, bzw. ein anderer Pfad angegeben werden. 
08.
On Error GoTo check_error 
09.
MkDir strNewFolder 
10.
Back1: 
11.
Set objPosteingang = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox) 
12.
For Each Item In objPosteingang.Items 
13.
  If Item.Class = olMail Then 
14.
   Set objNewMail = Item 
15.
   With objNewMail 
16.
   If .SenderEmailAddress = "test@absender.de" Then 'Hier die Absenderadresse, sonst Zeile löschen 
17.
   If .UnRead = True Then 'Diese Zeile bewirkt, dass nur ungelesene Items exportiert werden. 
18.
   
19.
  intanlagen = .Attachments.Count 
20.
  Debug.Print objNewMail & ": "; intanlagen 
21.
  If intanlagen > 0 Then 
22.
     For i = 1 To intanlagen 
23.
        Set oAttachment = .Attachments.Item(i) 
24.
           oAttachment.SaveAsFile strNewFolder & "\" & oAttachment.FileName 
25.
     Next i 
26.
   End If 
27.
   End If 'Dieses EndIf raus, wenn keine Beschränkung auf den Absender 
28.
End If 
29.
End With 
30.
End If 
31.
Next Item 
32.
MsgBox "Alle Anhänge gespeichert.", vbOKOnly, "Verarbeitung fertig" 'Hinweisbox der Fertigstellung. Wenn unerwünscht, Zeile raus 
33.
Exit Sub 
34.
 
35.
check_error: 
36.
Debug.Print Err.Number; Err.Description 
37.
If Err.Number = 75 Then ' Fehler beim Zugriff auf Pfad -- ignorieren wir mal 
38.
   Err.Clear 
39.
   GoTo Back1: 
40.
Else 
41.
   Err.Raise Err.Number, Err.Description 
42.
End If 
43.
 
44.
Err.Clear 
45.
Resume Next 
46.
 
47.
End Sub
Bitte warten ..
Mitglied: bastla
11.05.2009 um 19:35 Uhr
Hallo Saschbert!

Freut mich, dass es passt ...

Grüße - auch an Edith (die das erwähnte "End Sub", jetzt "Exit Sub", mitgebracht hat - das hatten wir oben noch gar nicht) ...
bastla
Bitte warten ..
Mitglied: Saschbert
11.05.2009 um 23:05 Uhr
Zitat von bastla:
Grüße - auch an Edith (die das erwähnte "End
Sub", jetzt "Exit Sub", mitgebracht hat - das hatten
wir oben noch gar nicht) ...

Hab sie mal ermahnt.

Aber so ist das, wenn man von einer Sprache noch nichts versteht, und die ersten Krabbelversuche wagt.
Bitte warten ..
Mitglied: TomTom81
14.07.2009 um 15:57 Uhr
hey,
schönes Script habt Ihr Euch da zusammengebastelt
Ich benutze es auch und es funktioniert prima !!

Ich bin leider in VB auch absolut unbeholfen und würde das Script gerne ein wenig erweitern.
Ich bekomme mehrere Mails mit jeweils 1 Anhang, dabei interessieren mich nur die Anhaenge.
Wenn die Anhaenge von dem gewissen Absender also kopiert sind, möchte ich die Emails direkt wieder
automatisch löschen.

Ich kann mir vorstellen, dass es folgendermassen funktioniert:

If .SenderEmailAddress = "mail@absender.de" then objNewMail.delete

Ob das richtig ist und wo das letztendlich in das script eingebunden werden muss, weis ich leider nicht.
Vielleicht kann mir einer von Euch helfen.

Gruß
Thomas
Bitte warten ..
Mitglied: JuliusLeo
14.07.2009 um 22:59 Uhr
Hi,
also ich habe den Code bei visual basic eingegeben...
01.
Module Module1 
02.
 
03.
    Sub Main() 
04.
    End Sub 
05.
    Sub application_NewMail() 
06.
        Dim strNewFolder As String 
07.
        Dim objPosteingang As MAPIFolder 
08.
        Dim objNewMail As MailItem 
09.
        Dim oAttachment As Attachment 
10.
        strNewFolder = "C:\TEMP\" & Format(Date, "yyyymmdd")& "-" & Format(Time, "hhmm") & "_Scandaten" 
11.
        On Error GoTo check_error 
12.
        MkDir(strNewFolder) 
13.
Back1: 
14.
        objPosteingang = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox) 
15.
        For Each Item In objPosteingang.Items 
16.
            If Item.Class = olMail Then 
17.
                objNewMail = Item 
18.
                With objNewMail 
19.
                    If .SenderEmailAddress = "test@absender.de" Then 
20.
                        If .UnRead = True Then 
21.
                            intanlagen = .Attachments.Count 
22.
                            Debug.Print objNewMail & ": "; intanlagen  
23.
                            If intanlagen > 0 Then 
24.
                                For i = 1 To intanlagen 
25.
                                    oAttachment = .Attachments.Item(i) 
26.
                                    oAttachment.SaveAsFile(strNewFolder & "\" & oAttachment.FileName) 
27.
                                Next i 
28.
                            End If 
29.
                            End With  
30.
            End If 
31.
        Next Item 
32.
        MsgBox("Alle Anhänge gespeichert.", vbOKOnly, "Verarbeitung fertig") 
33.
        Exit Sub 
34.
check_error: 
35.
        Debug.Print Err.Number; Err.Description  
36.
        End if 
37.
        Err.Clear() 
38.
        Resume Next 
39.
 
40.
    End Sub 
41.
 
42.
                                Next 
43.
                            End If 
44.
                        End If 
45.
                    End If 
46.
                End With 
47.
            End If 
48.
        Next 
49.
 
50.
 
51.
 
52.
 
53.
 
54.
 
55.
    End Sub 
56.
 
57.
End Module
... und dann kam das raus mehrere fehlermeldungen:
Fehler 1 Der Typ "MAPIFolder" ist nicht definiert. C:\Dokumente und Einstellungen\D - Chris\Lokale Einstellungen\Anwendungsdaten\Temporary Projects\ConsoleApplication1\Module1.vb 7 31 ConsoleApplication1
Fehler 2 Der Typ "MailItem" ist nicht definiert. C:\Dokumente und Einstellungen\D - Chris\Lokale Einstellungen\Anwendungsdaten\Temporary Projects\ConsoleApplication1\Module1.vb 8 27 ConsoleApplication1
Fehler 3 Der Typ "Attachment" ist nicht definiert. C:\Dokumente und Einstellungen\D - Chris\Lokale Einstellungen\Anwendungsdaten\Temporary Projects\ConsoleApplication1\Module1.vb 9 28 ConsoleApplication1
Fehler 4 Zur Angabe von Typargumenten für generische Typen oder Methoden ist "Of" erforderlich. C:\Dokumente und Einstellungen\D - Chris\Lokale Einstellungen\Anwendungsdaten\Temporary Projects\ConsoleApplication1\Module1.vb 10 44 ConsoleApplication1
Fehler 5 Typ erwartet. C:\Dokumente und Einstellungen\D - Chris\Lokale Einstellungen\Anwendungsdaten\Temporary Projects\ConsoleApplication1\Module1.vb 10 50 ConsoleApplication1
Fehler 6 Der Name "Time" wurde nicht deklariert. C:\Dokumente und Einstellungen\D - Chris\Lokale Einstellungen\Anwendungsdaten\Temporary Projects\ConsoleApplication1\Module1.vb 10 76 ConsoleApplication1
Fehler 7 Der Name "Application" wurde nicht deklariert. C:\Dokumente und Einstellungen\D - Chris\Lokale Einstellungen\Anwendungsdaten\Temporary Projects\ConsoleApplication1\Module1.vb 14 26 ConsoleApplication1
Fehler 8 Der Name "olFolderInbox" wurde nicht deklariert. C:\Dokumente und Einstellungen\D - Chris\Lokale Einstellungen\Anwendungsdaten\Temporary Projects\ConsoleApplication1\Module1.vb 14 76 ConsoleApplication1
Fehler 9 "If" muss mit einem entsprechenden "End If" abgeschlossen werden. C:\Dokumente und Einstellungen\D - Chris\Lokale Einstellungen\Anwendungsdaten\Temporary Projects\ConsoleApplication1\Module1.vb 19 21 ConsoleApplication1
Fehler 10 "If" muss mit einem entsprechenden "End If" abgeschlossen werden. C:\Dokumente und Einstellungen\D - Chris\Lokale Einstellungen\Anwendungsdaten\Temporary Projects\ConsoleApplication1\Module1.vb 20 25 ConsoleApplication1
Fehler 11 Methodenargumente müssen in Klammern stehen. C:\Dokumente und Einstellungen\D - Chris\Lokale Einstellungen\Anwendungsdaten\Temporary Projects\ConsoleApplication1\Module1.vb 22 41 ConsoleApplication1
Fehler 12 Ungültiges Zeichen. C:\Dokumente und Einstellungen\D - Chris\Lokale Einstellungen\Anwendungsdaten\Temporary Projects\ConsoleApplication1\Module1.vb 22 58 ConsoleApplication1
Fehler 13 Methodenargumente müssen in Klammern stehen. C:\Dokumente und Einstellungen\D - Chris\Lokale Einstellungen\Anwendungsdaten\Temporary Projects\ConsoleApplication1\Module1.vb 35 21 ConsoleApplication1
Fehler 14 Ungültiges Zeichen. C:\Dokumente und Einstellungen\D - Chris\Lokale Einstellungen\Anwendungsdaten\Temporary Projects\ConsoleApplication1\Module1.vb 35 31 ConsoleApplication1
Fehler 15 "End If" muss ein entsprechendes "If" voranstehen. C:\Dokumente und Einstellungen\D - Chris\Lokale Einstellungen\Anwendungsdaten\Temporary Projects\ConsoleApplication1\Module1.vb 36 9 ConsoleApplication1
Fehler 16 Syntaxfehler. C:\Dokumente und Einstellungen\D - Chris\Lokale Einstellungen\Anwendungsdaten\Temporary Projects\ConsoleApplication1\Module1.vb 42 33 ConsoleApplication1
Fehler 17 "End If" muss ein entsprechendes "If" voranstehen. C:\Dokumente und Einstellungen\D - Chris\Lokale Einstellungen\Anwendungsdaten\Temporary Projects\ConsoleApplication1\Module1.vb 43 29 ConsoleApplication1
Fehler 18 "End If" muss ein entsprechendes "If" voranstehen. C:\Dokumente und Einstellungen\D - Chris\Lokale Einstellungen\Anwendungsdaten\Temporary Projects\ConsoleApplication1\Module1.vb 44 25 ConsoleApplication1
Fehler 19 "End If" muss ein entsprechendes "If" voranstehen. C:\Dokumente und Einstellungen\D - Chris\Lokale Einstellungen\Anwendungsdaten\Temporary Projects\ConsoleApplication1\Module1.vb 45 21 ConsoleApplication1
Fehler 20 "End With" muss ein entsprechendes "With" voranstehen. C:\Dokumente und Einstellungen\D - Chris\Lokale Einstellungen\Anwendungsdaten\Temporary Projects\ConsoleApplication1\Module1.vb 46 17 ConsoleApplication1
Fehler 21 "End If" muss ein entsprechendes "If" voranstehen. C:\Dokumente und Einstellungen\D - Chris\Lokale Einstellungen\Anwendungsdaten\Temporary Projects\ConsoleApplication1\Module1.vb 47 13 ConsoleApplication1
Fehler 22 Syntaxfehler. C:\Dokumente und Einstellungen\D - Chris\Lokale Einstellungen\Anwendungsdaten\Temporary Projects\ConsoleApplication1\Module1.vb 48 9 ConsoleApplication1
Fehler 23 "End Sub" muss ein entsprechendes "Sub" voranstehen. C:\Dokumente und Einstellungen\D - Chris\Lokale Einstellungen\Anwendungsdaten\Temporary Projects\ConsoleApplication1\Module1.vb 55 5 ConsoleApplication1

Also ich bin ein zimlicher neuling in diesem Programm und würde mich über unterstützung freuen:
Vielen Dank im Voraus
Julius

[Edit Biber] In Code-Tags gesetzt [/Edit]
Bitte warten ..
Mitglied: JuliusLeo
15.07.2009 um 11:20 Uhr
Hallo,
oder könntet ihr mir das fertige Programm villeicht an meine E-mail adresse senden (koenig.julius@t-online.de).
Aber wenn möglich nicht auf eine E-mail adresse festgelegt, sondern das sie den Anhang jeder anommenen E-mail adresse in dem Ordner
Email -anhänge auf dem Desktop abspeichert. Wenn ihr das hinbekommen würdet, wäre das echt total nett.
Vielen Dank
Julius
Bitte warten ..
Mitglied: dhakra
21.07.2010 um 14:11 Uhr
Hi!

ich bin jetzt schon seit einiger Zeit auf der Suche nach einem ähnlichen Script, finde aber überall nur solche Scripte wie dieses hier.
Und zwar empfange ich Faxe als E-Mail mit PDF-Anhang. Ich möchte lediglich die PDF in den Outlookordner schieben damit ich in der Schnellansicht das Fax sehen und die E-Mail löschen kann. Leider weiß ich nicht wie ich Anhang in einen Outlookordner extrahiere. Den Rest würde ich mir dann irgendwie selbst zusammenschieben können. Wär cool wenn jemand n Ratschlag hat.

BTW: Ich arbeite bereits mit Outlook 2010 falls es dort irgendwelche dramatischen Änderungen bezüglich VBS gibt.
Bitte warten ..
Mitglied: bastla
21.07.2010 um 14:37 Uhr
Hallo JuliusLeo und ein nachträgliches Willkommen im Forum!
ich habe den Code bei visual basic eingegeben...
... klingt verdächtig nach VB20xx, und nicht nach Outlook-VBA ...

Ansonsten könntest Du es vielleicht mit der folgenden ungetesteten Version versuchen:
01.
Sub application_NewMail() 
02.
Dim strNewFolder As String 
03.
Dim objPosteingang As MAPIFolder 
04.
Dim objNewMail As MailItem 
05.
Dim oAttachment As Attachment 
06.
Dim WshShell As Object 
07.
Dim strDesktop As String 
08.
 
09.
Set WshShell = CreateObject("WScript.Shell") 
10.
strDesktop = WshShell.SpecialFolders("Desktop") 
11.
 
12.
strNewFolder = strDesktop & "\" & Format(Date, "yyyymmdd")& "-" & Format(Time, "hhmm") & "_Scandaten" 
13.
On Error GoTo check_error 
14.
MkDir(strNewFolder) 
15.
 
16.
objPosteingang = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox) 
17.
For Each Item In objPosteingang.Items 
18.
    If Item.Class = olMail Then 
19.
        objNewMail = Item 
20.
        With objNewMail 
21.
            'If .SenderEmailAddress = "test@absender.de" Then 'um nur Mails eines bestimmten Absenders zu bearbeiten, Kommentar entfernen (und Absenderadresse anpassen ;-)) 
22.
                If .UnRead = True Then 
23.
                    intanlagen = .Attachments.Count 
24.
                    Debug.Print objNewMail & ": "; intanlagen  
25.
                    For i = 1 To intanlagen 'If davor eingespart: wenn intanlagen < 1 ist, wird die Schleife ohnehin nicht ausgeführt ... 
26.
                        oAttachment = .Attachments.Item(i) 
27.
                        oAttachment.SaveAsFile(strNewFolder & "\" & oAttachment.FileName) 
28.
                    Next 
29.
                End If 
30.
            'End If 'um nur Mails eines bestimmten Absenders zu bearbeiten, Kommentar entfernen 
31.
        End With 
32.
    End If 
33.
Next Item 
34.
MsgBox("Alle Anhänge gespeichert.", vbOKOnly, "Verarbeitung fertig") 
35.
Exit Sub 
36.
 
37.
check_error: 
38.
Debug.Print Err.Number; Err.Description  
39.
Err.Clear() 
40.
Resume Next 
41.
 
42.
End Sub
Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (14)

Frage von liquidbase zum Thema Windows Update ...

DSL, VDSL
Problem mit variernder Internetgeschwindigkeit (12)

Frage von schaurian zum Thema DSL, VDSL ...