Digital-Inn
 
 

Go Back   Digital-Inn > Office-Welt > MS Outlook

MS Outlook Outlook . viel mehr als "nur" ein Mail-Programm.

Reply
 
Thread Tools Display Modes
Old 04-05-2009   #1
suchender
Registered User
 

Join Date: May 2009
Location: Germany
Posts: 1
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
Ich suche Hilfe beim Programmieren eines Makros

Hallo,

zufällig habe ich entdeckt, dass ich hier möglicherweise Hilfe finden kann. Ich brauche eine Routine, die aus bestimmten Mails die Anlage in ein Verzeichnis speichert. Durch Gestückel aus dem Internet und Hilfe von einem Bekannten habe ich folgendes Makro gebastelt:

Sub Application_NewMail()
Dim Ordnername As String
Dim objPosteingang As MAPIFolder
Dim objNewMail As MailItem
Dim Dateiname As String
Dim Anzahl As Integer
Dim Betreff As String
Set objPosteingang = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox)

On Error Resume Next

For Each objNewMail In objPosteingang.Items

If objNewMail.Subject Like "Schlussmeldung" Then
If Right$(objNewMail.Subject, 14) = "Schlussmeldung" Then
inhalt1 = objNewMail.Subject
laenge = Len(inhalt1)
laenge = laenge - 14
inhalt1 = Left$(objNewMail.Subject, 12)
' MsgBox "Betreff: " & inhalt1
With objNewMail
Anzahl = .Attachments.Count
If Anzahl > 0 Then
' MsgBox "Anzahl: " & Anzahl
' MsgBox "Betreff: " & objNewMail.Subject
Ordnername = "H:\test"
For i = 1 To Anzahl
.Attachments.Item(i).SaveAsFile Ordnername & "\" & .Attachments.Item(i).FileName
Next i
End If
End With
End If
End If

Next objNewMail
End Sub


Die erste If-Abfrage (Suche nach Mails mit "Schlussmeldung") findet keine Mails. Wenn ich diese Auskommentiere und dann das Makro starte, wird die Anlage einer Mail gespeichert. Im Posteingang befinden sich jedoch ca. 60 Mails, von denen etwa die Hälfte mindestens eine Anlage hat. Gut wäre auch noch, wenn der Dateiname der gespeicherten Datei aus einem Teil (leider der mittlere) des Mail-Betreffs bestehen könnte und die Mail nach dem Speichern in ein anderes Outlookverzeichnis verschoben werden könnte.

Ich verwende Outlook 2002, SP 3.

Über rasche Hilfe würde ich mich freuen.

Gruß
ein Suchender
suchender is offline   Reply With Quote
Sponsored Links
Old 08-07-2009   #2
nak
Registered User
 

Join Date: Jul 2009
Location: germany
Posts: 3
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
Hallo,
>>If-Abfrage (Suche nach Mails mit "Schlussmeldung") findet keine Mails
Like vergleicht zwei Zeichenfolgen miteinander. "Schlussmeldung" scheint aber nur ein Teil von Subject zu sein. Demzufolge ist der Vergleich immer False. Setze vor und nach "Schlussmeldung einfach ein Jokerzeichen (*). Damit sollten alle E-Mails mit "Schlussmeldung im Subject gefunden werden.
Ich habe Dir mal ein Beispiel für das Kopieren/Verschieben von E-Mails angefügt.
Der nachfolgende Code sollte funktionieren. Auf das zusammenbasteln einer neuen Betreff-Zeile habe ich verzichtet.

Code:
Option Explicit

Sub SaveAttachements()

  Dim objNameSpace As Outlook.NameSpace
  Dim sAttachementDir As String
  Dim objSourceFolder As Outlook.Folder
  Dim objTargetFolder As Outlook.Folder
  Dim objMailItem As Outlook.MailItem
  Dim objCopiedItem As Outlook.MailItem
  Dim i, j As Integer
  Dim sRootFolder As String
  Dim sSubjectPattern As String
      
  sSubjectPattern = "*"
  sAttachementDir = "c:\temp\outlook\"
  
  Set objNameSpace = Application.GetNamespace("MAPI")
  
  Set objSourceFolder = objNameSpace.GetDefaultFolder(olFolderInbox)
  sRootFolder = objNameSpace.DefaultStore.GetRootFolder.Name
  Set objTargetFolder = GetMAPIFolder("\" & sRootFolder & "\temp")
  
  ' Alle Mails im Ordner durchlaufen
  For i = objSourceFolder.Items.Count To 1 Step -1
    Set objMailItem = objSourceFolder.Items.Item(i)
    
    If objMailItem.Subject Like sSubjectPattern Then
    
    ' Attachements im Dateisystem speichern
    With objMailItem.Attachments
      If .Count > 0 Then
       For j = 1 To .Count
          .Item(j).SaveAsFile sAttachementDir & .Item(j).FileName
        Next j
      End If
    End With
    
    ' Hier Code zur Namensgebung einfügen
    
    ' Mail kopieren
    'Set objCopiedItem = objMailItem.Copy
    'objCopiedItem.Move objTargetFolder

    
    ' Mail verschieben
    objMailItem.Move objTargetFolder
  
  End If
  
  Next
  
End Sub

Private Function GetMAPIFolder(sPath As String) As Folder
  
  Dim objNameSpace As NameSpace
  Dim objFolder As Folder
  Dim i As Integer
  Dim sDir As String
     
  Set objFolder = Nothing
  If Left(sPath, Len("\")) = "\" Then
      sPath = Mid(sPath, Len("\") + 1)
  Else
      Set objFolder = Application.ActiveExplorer.CurrentFolder
  End If
  
  While sPath <> ""
      i = InStr(sPath, "\")
      If i Then
          sDir = Left(sPath, i - 1)
          sPath = Mid(sPath, i + Len("\"))
      Else
          sDir = sPath
          sPath = ""
      End If
      If IsNothing(objFolder) Then
          Set objNameSpace = Application.GetNamespace("MAPI")
          Set objFolder = objNameSpace.Folders(sDir)
      Else
          Set objFolder = objFolder.Folders(sDir)
      End If
  Wend
  Set GetMAPIFolder = objFolder
    
End Function
 
Private Function IsNothing(objObject As Object) As Boolean
    If TypeName(objObject) = "Nothing" Then
        IsNothing = True
    Else
        IsNothing = False
    End If
End Function
Gruß Karsten Natebus

Last edited by nak on 08-07-2009 at 00:39
nak is offline   Reply With Quote
Sponsored Links
Reply

Tags
anlage, makro, outlook, speichern

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump


All times are GMT +2. The time now is 01:04.


Powered by vBulletin® Version 3.7.4
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
SEO by vBSEO 2.4.0
Template-Modifikationen durch TMS
Advertisement System V2.5 By   Branden
Copyright by NightwoLF & Jesse69