sylvia
Goto Top

Outlook 2003: Datei aus Mailanhang automatisch in Ordner verschieben oder kopieren

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

Content-Key: 48253

Url: https://administrator.de/contentid/48253

Printed on: April 16, 2024 at 23:04 o'clock

Member: Biber
Biber Jan 08, 2007 at 18:30:00 (UTC)
Goto Top
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
Member: Sylvia
Sylvia Jan 10, 2007 at 11:33:50 (UTC)
Goto Top
Hallo Biber

danke schön, ich bin wohl etwas blind face-smile
Leider funktioniert das Ding nicht bei mir face-sad 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 face-sad

Grüsse
Sylvia
Member: Sylvia
Sylvia Jan 10, 2007 at 11:37:23 (UTC)
Goto Top
kaum hab ichs nochmal getestet nach dem Absenden des Postings, hat er zumindest mal den Ordner angelegt - aber da is nix drin face-confused
Ein pdf-Anhang habe ich aber der Mail beigefügt face-smile
Member: Biber
Biber Jan 10, 2007 at 12:08:07 (UTC)
Goto Top
Moin Sylvia,
versuch es mal bitte so:
Sub Application_NewMail()
Dim strNewFolder As String
Dim objPosteingang As MAPIFolder
Dim objNewMail As MailItem
Dim aAttachment As Attachment

strNewFolder = "E:\mailanhang\" & Format(Date, "ddmmyy")  
On Error Resume Next
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
              Set oAttachment = .Attachments.Item(i)
              oAttachment.SaveAsFile strNewFolder & "\" & oAttachment.FileName  
           Next i
       End If
   End If
   End With
Next objNewMail
End Sub

Der Ordner "E:\Mailanhang" MUSS existieren.
( Oder eben vorher mit "MkDir E:\Mailanhang" extra angelegt werden.)

Gruß
Biber
Member: Sylvia
Sylvia Jan 10, 2007 at 12:47:06 (UTC)
Goto Top
Hallo Biber,

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

Kann das ein Berechtigungsproblem sein ? Auf den Ordner haben autentifizierte Benutzer zugriff - und admin und system natürlich eh.
Grüsse
Sylvia
Member: Biber
Biber Jan 12, 2007 at 10:36:06 (UTC)
Goto Top
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
Member: Sylvia
Sylvia Jan 12, 2007 at 10:57:17 (UTC)
Goto Top
Aha face-smile
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 face-sad

Hast Du einen Rat ?

Grüsse
Sylvia
Member: Sylvia
Sylvia Jan 12, 2007 at 11:25:18 (UTC)
Goto Top
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
Member: Biber
Biber Jan 12, 2007 at 12:55:59 (UTC)
Goto Top
Sorry, Sylvia,

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

Next Try:
Sub Application_NewMail()
Dim strNewFolder As String
Dim objPosteingang As MAPIFolder
Dim objNewMail As MailItem
Dim oAttachment As Attachment

strNewFolder = "D:\mailanhang\" & Format(Date, "ddmmyy")  
On Error GoTo check_error
MkDir strNewFolder
Back1:
Set objPosteingang = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox)  
For Each Item In objPosteingang.Items
  If Item.Class = olMail Then
   Set objNewMail = Item
   With objNewMail
   If .UnRead = True Then
  
  intanlagen = .Attachments.Count
  Debug.Print objNewMail & ": "; intanlagen  
  If intanlagen > 0 Then
     For i = 1 To intanlagen
        Set oAttachment = .Attachments.Item(i)
           oAttachment.SaveAsFile strNewFolder & "\" & oAttachment.FileName  
     Next i
   End If
End If
End With
End If
Next Item

check_error:
Debug.Print Err.Number; Err.Description
If Err.Number = 75 Then ' Fehler beim Zugriff auf Pfad -- ignorieren wir mal  
   Err.Clear
   GoTo Back1:
Else
   Err.Raise Err.Number, Err.Description
End If

Err.Clear
Resume Next

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
Member: Sylvia
Sylvia Jan 12, 2007 at 14:10:15 (UTC)
Goto Top
Vielen Dank !! es tuuuuuuuuuuuuuuuuut face-smile
ausser dass das D:\ ein E:\ war, aber das hab ich hinbekommen face-smile

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

Immerhin speichert er die Datei nun ab face-smile

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
Member: Biber
Biber Jan 12, 2007 at 18:11:05 (UTC)
Goto Top
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... face-wink

Schönes Wochenende
Biber
Member: Sylvia
Sylvia Jan 15, 2007 at 07:34:29 (UTC)
Goto Top
Guten Morgen face-smile
ich hatte auch Wochenende... und hab mir dabei den Kopf zerbrochen wie vb wohl funktionieren mag... leider ergebnislos face-sad

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 ? face-smile

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 face-smile

Grüße
Sylvia
Member: Biber
Biber Jan 15, 2007 at 08:11:15 (UTC)
Goto Top
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
Member: Sylvia
Sylvia Jan 15, 2007 at 08:57:20 (UTC)
Goto Top
Es scheint nun etwas besser zu sein face-smile

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
Member: Biber
Biber Jan 15, 2007 at 19:01:46 (UTC)
Goto Top
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? face-wink

Grüße
Biber
Member: Sylvia
Sylvia Jan 16, 2007 at 08:16:01 (UTC)
Goto Top
Guten Morgen, Biber face-smile

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
Member: Sylvia
Sylvia Jan 17, 2007 at 08:59:06 (UTC)
Goto Top
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
Member: bastla
bastla Jan 17, 2007 at 16:23:10 (UTC)
Goto Top
Hallo Sylvia!

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

Du könntest zum Aufteilen der Attachments auf entsprechende Unterordner versuchsweise die "For"-Schleife durch folgende Variante ersetzen:
...
Set fso = CreateObject("Scripting.FileSystemObject")  
For i = 1 To intanlagen
	Set oAttachment = .Attachments.Item(i)
	strFileName = oAttachment.FileName
	strFileType = ""  
	If InstrRev(strFileName, ".") Then strFileType = LCase(Mid(strFileName, InstrRev(strFileName, ".")))  
	Select Case strFileType
	Case ".xls" 'Typ mit Kleinbuchstaben angeben  
		strSubFolder = "Excel"  
	Case ".csv"  
		strSubFolder = "CSV"  
	Case Else
		strSubFolder = "Andere"  
	End Select
	strSavePath = strNewFolder & "\" & strSubFolder  
	If Not fso.FolderExists(strSavePath) Then fso.CreateFolder(strSavePath)
	oAttachment.SaveAsFile strSavePath & "\" & oAttachment.FileName  
Next i
...

Grüße
bastla
Member: Sylvia
Sylvia Jan 18, 2007 at 10:37:13 (UTC)
Goto Top
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 face-wink

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
Member: Sylvia
Sylvia Jul 23, 2007 at 09:10:45 (UTC)
Goto Top
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
Member: Saschbert
Saschbert May 08, 2009 at 16:11:31 (UTC)
Goto Top
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
Member: bastla
bastla May 08, 2009 at 17:48:22 (UTC)
Goto Top
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
Member: Saschbert
Saschbert May 11, 2009 at 16:54:14 (UTC)
Goto Top
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 face-smile), 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:

Sub Application_NewMail()
Dim strNewFolder As String
Dim objPosteingang As MAPIFolder
Dim objNewMail As MailItem
Dim oAttachment As Attachment

strNewFolder = "C:\TEMP\" & Format(Date, "yyyymmdd") & "-" & Format(Time, "hhmm") & "_Scandaten" 'Hier könnte die Benennung auch getauscht werden, bzw. ein anderer Pfad angegeben werden.  
On Error GoTo check_error
MkDir strNewFolder
Back1:
Set objPosteingang = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox)  
For Each Item In objPosteingang.Items
  If Item.Class = olMail Then
   Set objNewMail = Item
   With objNewMail
   If .SenderEmailAddress = "test@absender.de" Then 'Hier die Absenderadresse, sonst Zeile löschen  
   If .UnRead = True Then 'Diese Zeile bewirkt, dass nur ungelesene Items exportiert werden.  
  
  intanlagen = .Attachments.Count
  Debug.Print objNewMail & ": "; intanlagen  
  If intanlagen > 0 Then
     For i = 1 To intanlagen
        Set oAttachment = .Attachments.Item(i)
           oAttachment.SaveAsFile strNewFolder & "\" & oAttachment.FileName  
     Next i
   End If
   End If 'Dieses EndIf raus, wenn keine Beschränkung auf den Absender  
End If
End With
End If
Next Item
MsgBox "Alle Anhänge gespeichert.", vbOKOnly, "Verarbeitung fertig" 'Hinweisbox der Fertigstellung. Wenn unerwünscht, Zeile raus  
Exit Sub

check_error:
Debug.Print Err.Number; Err.Description
If Err.Number = 75 Then ' Fehler beim Zugriff auf Pfad -- ignorieren wir mal  
   Err.Clear
   GoTo Back1:
Else
   Err.Raise Err.Number, Err.Description
End If

Err.Clear
Resume Next

End Sub
Member: bastla
bastla May 11, 2009 at 17:35:41 (UTC)
Goto Top
Hallo Saschbert!

Freut mich, dass es passt ... face-smile

Grüße - auch an Edith (die das erwähnte "End Sub", jetzt "Exit Sub", mitgebracht hat - das hatten wir oben noch gar nicht) ... face-wink
bastla
Member: Saschbert
Saschbert May 11, 2009 at 21:05:02 (UTC)
Goto Top
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) ... face-wink

Hab sie mal ermahnt. face-wink

Aber so ist das, wenn man von einer Sprache noch nichts versteht, und die ersten Krabbelversuche wagt.
Member: TomTom81
TomTom81 Jul 14, 2009 at 13:57:12 (UTC)
Goto Top
hey,
schönes Script habt Ihr Euch da zusammengebastelt face-smile
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
Member: JuliusLeo
JuliusLeo Jul 14, 2009 at 20:59:07 (UTC)
Goto Top
Hi,
also ich habe den Code bei visual basic eingegeben...
Module Module1

    Sub Main()
    End Sub
    Sub application_NewMail()
        Dim strNewFolder As String
        Dim objPosteingang As MAPIFolder
        Dim objNewMail As MailItem
        Dim oAttachment As Attachment
        strNewFolder = "C:\TEMP\" & Format(Date, "yyyymmdd")& "-" & Format(Time, "hhmm") & "_Scandaten"  
        On Error GoTo check_error
        MkDir(strNewFolder)
Back1:
        objPosteingang = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox)  
        For Each Item In objPosteingang.Items
            If Item.Class = olMail Then
                objNewMail = Item
                With objNewMail
                    If .SenderEmailAddress = "test@absender.de" Then  
                        If .UnRead = True Then
                            intanlagen = .Attachments.Count
                            Debug.Print objNewMail & ": "; intanlagen   
                            If intanlagen > 0 Then
                                For i = 1 To intanlagen
                                    oAttachment = .Attachments.Item(i)
                                    oAttachment.SaveAsFile(strNewFolder & "\" & oAttachment.FileName)  
                                Next i
                            End If
                            End With 
            End If
        Next Item
        MsgBox("Alle Anhänge gespeichert.", vbOKOnly, "Verarbeitung fertig")  
        Exit Sub
check_error:
        Debug.Print Err.Number; Err.Description 
        End if
        Err.Clear()
        Resume Next

    End Sub

                                Next
                            End If
                        End If
                    End If
                End With
            End If
        Next






    End Sub

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]
Member: JuliusLeo
JuliusLeo Jul 15, 2009 at 09:20:48 (UTC)
Goto Top
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
Member: dhakra
dhakra Jul 21, 2010 at 12:11:26 (UTC)
Goto Top
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.
Member: bastla
bastla Jul 21, 2010 at 12:37:35 (UTC)
Goto Top
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:
Sub application_NewMail()
Dim strNewFolder As String
Dim objPosteingang As MAPIFolder
Dim objNewMail As MailItem
Dim oAttachment As Attachment
Dim WshShell As Object
Dim strDesktop As String

Set WshShell = CreateObject("WScript.Shell")  
strDesktop = WshShell.SpecialFolders("Desktop")  

strNewFolder = strDesktop & "\" & Format(Date, "yyyymmdd")& "-" & Format(Time, "hhmm") & "_Scandaten"  
On Error GoTo check_error
MkDir(strNewFolder)

objPosteingang = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox)  
For Each Item In objPosteingang.Items
    If Item.Class = olMail Then
        objNewMail = Item
        With objNewMail
            'If .SenderEmailAddress = "test@absender.de" Then 'um nur Mails eines bestimmten Absenders zu bearbeiten, Kommentar entfernen (und Absenderadresse anpassen ;-))  
                If .UnRead = True Then
                    intanlagen = .Attachments.Count
                    Debug.Print objNewMail & ": "; intanlagen   
                    For i = 1 To intanlagen 'If davor eingespart: wenn intanlagen < 1 ist, wird die Schleife ohnehin nicht ausgeführt ...  
                        oAttachment = .Attachments.Item(i)
                        oAttachment.SaveAsFile(strNewFolder & "\" & oAttachment.FileName)  
                    Next
                End If
            'End If 'um nur Mails eines bestimmten Absenders zu bearbeiten, Kommentar entfernen  
        End With
    End If
Next Item
MsgBox("Alle Anhänge gespeichert.", vbOKOnly, "Verarbeitung fertig")  
Exit Sub

check_error:
Debug.Print Err.Number; Err.Description 
Err.Clear()
Resume Next

End Sub
Grüße
bastla