Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Outlook-Script zum Speichern einer Mail
Gehe zu Seite Zurück  1, 2, 3, 4, 5, 6, 7, 8, 9  Weiter
zurück: Signatur per Makro bearbeiten weiter: Warnfenster falls Betreff schon im Postfach vorhanden ? Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Antwort Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
Fsteinhaus
Gast


Verfasst am:
18. Jan 2007, 13:20
Rufname:

AW: Outlook-Script zum Speichern einer Mail - AW: Outlook-Script zum Speichern einer Mail

Nach oben
       

Hallo

super Lösung.

Frage: Wie bekomme ich es hin, dass der start der Auswahl des Speicherortes immer an der gleichen stelle beginnt. z.B S:\Projekte

Gruß Frank
Andreas.Fischer
Outlook - Moderator


Verfasst am:
19. Jan 2007, 09:10
Rufname:
Wohnort: Berlin


Re: AW: Outlook-Script zum Speichern einer Mail - Re: AW: Outlook-Script zum Speichern einer Mail

Nach oben
       Version: Office 2003

Hallo ameise,

ameise - 11. Jan 2007, 10:30 hat folgendes geschrieben:
diese Lösung ist Klasse.

Ich so etwas dringend, allerdings sollten die Mails mit folgender syntax abgelegt werden

Datum_ Name des Absenders_Betreff_Name 1.Empfänger

Das Makro ist mittlerweile so kpmlex, daß ich mir keine Änderungen zutraue.


Ersetze im Sub SpeichernalsMSG die Zeile
Code:
strname = IIf(Len(strBackupPath & myItem.Subject) > 255, _
Left(myItem.Subject, 255 - Len(strBackupPath)), myItem.Subject) & ".txt"

Durch diese neuen Codezeilen
Code:
With myItem
fstTo = Mid(.To, 1, InStr(1, .To, ";", vbTextCompare))
If fstTo = "" Then fstTo = .To
If fstTo = "" Then fstTo = "BCC-Empfänger"
itemName = Format(.ReceivedTime, "ddmmyyyy") & "_" & .SenderName & "_" & .Subject & "_" & fstTo

strname = IIf(Len(strBackupPath & itemName) > 255, _
Left(itemName, 255 - Len(strBackupPath)), itemName) & ".txt"
End With

Der Ablagesyntax sieht dann so aus: Empfangsdatum_Sendername_Betreff_1.Emfpänger

Das Empfangsdatum wird im Format ddmmyyyy z.B. 18012007.
Wenn kein Empfänger angegeben ist, wird der Text BCC-Empfänger als 1. Empfänger gesetzt.

_________________
Gruß Andreas

Das besondere Erleben.
Andreas.Fischer
Outlook - Moderator


Verfasst am:
19. Jan 2007, 09:28
Rufname:
Wohnort: Berlin

Re: AW: Outlook-Script zum Speichern einer Mail - Re: AW: Outlook-Script zum Speichern einer Mail

Nach oben
       

Hallo Fsteinhaus,

Fsteinhaus - 18. Jan 2007, 12:20 hat folgendes geschrieben:
Hallo

super Lösung.

Frage: Wie bekomme ich es hin, dass der start der Auswahl des Speicherortes immer an der gleichen stelle beginnt. z.B S:\Projekte

Gruß Frank


Das ist, soweit ich weiß, nicht möglich. SHBrowseForFolder unterstützt leider nicht die Verwendung eines Standardpfades.

_________________
Gruß Andreas

Das besondere Erleben.
Hackepeter
Office-VBA-Einsteiger


Verfasst am:
19. Jan 2007, 17:21
Rufname:
Wohnort: Hessen

AW: Outlook-Script zum Speichern einer Mail - AW: Outlook-Script zum Speichern einer Mail

Nach oben
       Version: Office XP (2002)

Also ich mache das so:

Aufruf zum Auswählen:
Code:
Pfad = VerzeichnisSuchen("Wählen Sie bitte das Verzeichnis aus, in das die Mails gespeichert werden sollen!", "K:\Pfad\")


Die Funktion VerzeichnisSuchen:
Code:
Private Function VerzeichnisSuchen(szDialogTitle As String, _
                StartVerzeichnis As String) As String
'---------------------------------------------------------------------------------------
' Procedure : VerzeichnisSuchen / Function
' Purpose   : Dialog zur Verzeichnisauswahl anzeigen
'---------------------------------------------------------------------------------------
' Parameter : Startverzeichnis als kompletter Pfad
' Rückgabe  : String / s
' Ergebnis  : vollständiger Verzeichnispfad
'---------------------------------------------------------------------------------------
 
  Dim x         As Long
  Dim bi        As BROWSEINFO
  Dim dwIList   As Long
  Dim szPath    As String
  Dim wPos      As Integer
 
  StartDir = StartVerzeichnis
 
  With bi
        .hOwner = hWndAccessApp
        .lpszTitle = szDialogTitle
        .ulFlags = BIF_RETURNONLYFSDIRS
        .lpfn = DummyFunc(AddressOf BrowseCallbackProc)
    End With
 
    dwIList = SHBrowseForFolder(bi)
    szPath = Space$(512)
    x = SHGetPathFromIDList(ByVal dwIList, ByVal szPath)
 
    If x Then
        wPos = InStr(szPath, Chr(0))
        VerzeichnisSuchen = Left$(szPath, wPos - 1)
    Else
        VerzeichnisSuchen = ""
    End If
End Function

Public Function BrowseCallbackProc(ByVal Hwnd As Long, ByVal uMsg As Long, _
                ByVal lParam As Long, ByVal lpData As Long) As Long
 
    Dim pathstring  As String
    Dim retval      As Long
 
    Select Case uMsg
        Case BFFM_INITIALIZED
            pathstring = StartDir
            retval = SendMessage(Hwnd, BFFM_SETSELECTION, _
                     ByVal CLng(1), ByVal pathstring)
    End Select
 
    BrowseCallbackProc = 0
 
End Function
Public Function DummyFunc(ByVal param As Long) As Long
 
    DummyFunc = param
 
End Function


Das gibt Dir die Möglichkeit die Du brauchst...

Viel Spaß
Hackepeter

_________________
Manchmal kommt einer daher und kriegt es hin...
Andreas.Fischer
Outlook - Moderator


Verfasst am:
22. Jan 2007, 13:33
Rufname:
Wohnort: Berlin


AW: Outlook-Script zum Speichern einer Mail - AW: Outlook-Script zum Speichern einer Mail

Nach oben
       

Hallo Hackepeter,

Also bei mir klappt dein Script nicht.
Erstmal fehlen die Declarationen und dann springt er das BrowseCallbackProc bei mir überhaupt nicht an.
Und anzeigen tut er dann nur das übliche. Sad

Wie / Wo hast du den die Funktion eingebunden?

_________________
Gruß Andreas

Das besondere Erleben.
sglanzer
Im Profil kannst Du frei den Rang ändern


Verfasst am:
26. Feb 2007, 18:21
Rufname:
Wohnort: Österreich

AW: Outlook-Script zum Speichern einer Mail - AW: Outlook-Script zum Speichern einer Mail

Nach oben
       

Hej,
genial, das suche ich schon lange.
HABE FOLGENDES PROBLEM: Kenne mich nicht so gut beim Skripten aus.
Gibt es hier auch eine Anleitung von A bis Z? Zumindest ein komplettes Skript?

Ich will auch, dass ich mit einem Knopf in der Outlook-Leiste ein Skript starten kann, das folgendes macht:

Automatisch: Dateiname ist folgender - ymmdd_BetreffWort1_BetreffWort2....msg
Automatisch: Format ist .msg

Zum Wählen: Speicherort

Danke, Danke
Sigrid
Andreas.Fischer
Outlook - Moderator


Verfasst am:
27. Feb 2007, 14:02
Rufname:
Wohnort: Berlin

AW: Outlook-Script zum Speichern einer Mail - AW: Outlook-Script zum Speichern einer Mail

Nach oben
       

Hallo Sigrid,

Du musst die Zeilen mit strname = ... mit diesen austauschen.
Code:

itemName = Format(.ReceivedTime, "yymmdd") & "_" & myitem.Subject
strname = IIf(Len(strBackupPath & itemName) > 255, _
Left(itemName, 255 - Len(strBackupPath)), itemName) & ".msg"


Dann musst du noch die nächste Zeile, myItem.SaveAs, durch die folgende ersetzen:
Code:
myItem.SaveAs strBackupPath & "\" & CleanString(strname), olMsg


Füge zum Schluss noch folgende Zeile in die Funktion CleanString ein
Code:
strData = ReplaceChar(strData, " ", "_")

_________________
Gruß Andreas

Das besondere Erleben.
Gast



Verfasst am:
24. Apr 2007, 15:17
Rufname:

AW: Outlook-Script zum Speichern einer Mail - AW: Outlook-Script zum Speichern einer Mail

Nach oben
       

Geiles Script!
Problem, das noch auftritt: Wenn mehrfach der gleiche Betreff auftaucht, wird nur die jüngste Datei abgespeichert, die anderen sind verloren.
Kann man das Abfangen, z. B., indem die Betreffs einfach durchnummeriert werden?

Robby
Andreas.Fischer
Outlook - Moderator


Verfasst am:
02. Mai 2007, 10:04
Rufname:
Wohnort: Berlin

AW: Outlook-Script zum Speichern einer Mail - AW: Outlook-Script zum Speichern einer Mail

Nach oben
       

Hallo Robby,

Hat zwar ein wenig gedauert, aber hier habe ich ein Lösung für dich:
Füge folgende Function ein:
Code:
Public Function FileExists(PrüfnameMsg, SubDir As String)

On Error Resume Next
'Datei schon gespeichert
      changes = False
      Number = 1
      Prüfname = PrüfnameMsg
Back:

      Number = Number + 1

       If CreateObject("Scripting.FileSystemObject").FileExists(Prüfname) = True Then
        dateiname = CreateObject("Scripting.FileSystemObject").GetBaseName(Prüfname)
        dateiendung = CreateObject("Scripting.FileSystemObject").GetExtensionName(Prüfname)
        dateinameneu = dateiname & " (" & Number & ")" & "." & dateiendung
        Prüfname = SubDir & "\" & dateinameneu
        changes = True
        GoTo Back:
       Else
       End If

        If changes = False Then
         FileExists = PrüfnameMsg
        Else
         FileExists = Prüfname
        End If

End Function

Nun ersetze die Zeile
Code:
myItem.SaveAs strBackupPath & "\" & CleanString(strname), olTXT
durch diese Zeilen:
Code:
'Ist Datei schon vorhanden
strtestname = strBackupPath & "\" & CleanString(strname)

myItem.SaveAs FileExists(strtestname, strBackupPath), olTXT

Wichtiger Hinweis:
Wenn du die E-Mail als Textdatei speichern willst, dann nutze olTXT.
Wenn du die E-Mail als HTML-Datei speichern willst, dann nutze olHTML.
Wenn du die E-Mail als MSG-Datei speichern willst, dann nutze olMSG.

_________________
Gruß Andreas

Das besondere Erleben.
Gast



Verfasst am:
28. Jun 2007, 11:46
Rufname:

AW: Outlook-Script zum Speichern einer Mail - AW: Outlook-Script zum Speichern einer Mail

Nach oben
       

Hallo Andreas,

ich habe Dein Skript ausprobiert. Die Anhänge wurden gespeichert, aber die Email Nachricht wird jedoch nicht gespeichert. Kannst Du bitte helfen? Eventuell wäre es sehr sinnvoll den kompletten Skript zu posten.

viele Grüße
NA
Andreas.Fischer
Outlook - Moderator


Verfasst am:
28. Jun 2007, 12:57
Rufname:
Wohnort: Berlin

AW: Outlook-Script zum Speichern einer Mail - AW: Outlook-Script zum Speichern einer Mail

Nach oben
       

Hallo NA,

Bitte poste du das Script, welches du verwendest. Dann kann ich eine genaue Fehleranalyse durchführen.
Bitte nutze zum Posten die CODE-Tags.

_________________
Gruß Andreas

Das besondere Erleben.
Gast



Verfasst am:
28. Jun 2007, 13:07
Rufname:

AW: Outlook-Script zum Speichern einer Mail - AW: Outlook-Script zum Speichern einer Mail

Nach oben
       

Code:



Public Declare Function lstrcat Lib "kernel32" Alias "lstrcatA" (ByVal lpString1 As String, ByVal lpString2 As String) As Long
Public Declare Function SHBrowseForFolder Lib "shell32" (lpbi As BrowseInfo) As Long
Public Declare Function SHGetPathFromIDList Lib "shell32" (ByVal pidList As Long, ByVal lpBuffer As String) As Long
Public Declare Sub CoTaskMemFree Lib "ole32.dll" (ByVal hMem As Long)

Public Const BIF_RETURNONLYFSDIRS = 1
Public Const MAX_PATH = 260

Public Type BrowseInfo
    hwndOwner As Long
    pIDLRoot As Long
    pszDisplayName As Long
    lpszTitle As Long
    ulFlags As Long
    lpfnCallback As Long
    lParam As Long
    iImage As Long
End Type


Sub SpeichernalsMSG()

Dim myExplorer As Outlook.Explorer
Dim myFolder As Outlook.MAPIFolder
Dim strname As String
Dim myItem As MailItem
Dim olSelection As Selection
Dim strBackupPath As String
Dim lngAttCount As Long, i As Long


Set myExplorer = Application.ActiveExplorer
Set myFolder = myExplorer.CurrentFolder

If Not myFolder.DefaultItemType = olMailItem Then GoTo Ende

strBackupPath = GetFileDir

Set olSelection = myExplorer.Selection


For Each myItem In olSelection

strname = IIf(Len(strBackupPath & myItem.Subject) > 255, _
Left(myItem.Subject, 255 - Len(strBackupPath)), myItem.Subject) & ".txt"


myItem.SaveAs strBackupPath & "\" & CleanString(strname), OLTXT    '=> GIBT FEHLER AUS !!!

       
'Anlagen speichern
  lngAttCount = myItem.Attachments.Count
   If lngAttCount > 0 Then
    For i = lngAttCount To 1 Step -1

     With myItem.Attachments.Item(i)
      strname = IIf(Len(strBackupPath & myItem.Subject) > 255, _
                Left(myItem.Subject, 255 - Len(strBackupPath)), myItem.Subject)
               
      strSubDir = strBackupPath & "\" & CleanString(strname)

       If Dir(strSubDir, vbDirectory) = "" Then
        MkDir strSubDir
       End If

'    Datei schon gespeichert
      datei = strSubDir & "\" & .FileName
      geändert = False
      nummer = 1
      prüfname = datei
Zurück:

      nummer = nummer + 1

       If CreateObject("Scripting.FileSystemObject").FileExists(prüfname) = True Then
        dateiname = CreateObject("Scripting.FileSystemObject").GetBaseName(datei)
        dateiendung = CreateObject("Scripting.FileSystemObject").GetExtensionName(datei)
        dateinameneu = dateiname & " (" & nummer & ")" & "." & dateiendung
        prüfname = strSubDir & "\" & dateinameneu
        geändert = True
        GoTo Zurück:
       Else
        If geändert = False Then dateinameneu = .FileName
       End If

     .SaveAsFile strSubDir & "\" & dateinameneu
    End With
   Next
  Else
  End If
Next
Ende:

End Sub

Private Function CleanString(strData As String) As String
strData = ReplaceChar(strData, "´", "_")
strData = ReplaceChar(strData, "`", "_")
strData = ReplaceChar(strData, "'", "_")
strData = ReplaceChar(strData, "{", "(")
strData = ReplaceChar(strData, "[", "(")
strData = ReplaceChar(strData, "]", ")")
strData = ReplaceChar(strData, "}", ")")
strData = ReplaceChar(strData, "/", "-")
strData = ReplaceChar(strData, "\", "-")
strData = ReplaceChar(strData, ":", "")
strData = ReplaceChar(strData, "*", "_")
strData = ReplaceChar(strData, "?", "")
strData = ReplaceChar(strData, """", "_")
strData = ReplaceChar(strData, "|", "")
strData = ReplaceChar(strData, "<", "")
strData = ReplaceChar(strData, ">", "")
strData = ReplaceChar(strData, " ", "_")
CleanString = Trim(strData)
End Function

Private Function ReplaceChar(strData As String, strBadChar As String, strGoodChar As String) As String
Dim tmpChar, tmpString As String
Dim i As Long
For i = 1 To Len(strData)
tmpChar = Mid(strData, i, 1)
If tmpChar = strBadChar Then
tmpString = tmpString & strGoodChar
Else
tmpString = tmpString & tmpChar
End If
Next i
ReplaceChar = Trim(tmpString)
End Function

Public Function GetFileDir() As String
Dim ret As String
    Dim lpIDList As Long
    Dim sPath As String, udtBI As BrowseInfo
    Dim RdStrings() As String, nNewFiles As Long

    'Show a browse-for-folder form:
    With udtBI
        .lpszTitle = lstrcat("Bitte wählen Sie den Ordner zum Exportieren:", "")
        .ulFlags = BIF_RETURNONLYFSDIRS
    End With

    lpIDList = SHBrowseForFolder(udtBI)
    If lpIDList = 0 Then Exit Function
       
    'Get the selected folder.
    sPath = String$(MAX_PATH, 0)
    SHGetPathFromIDList lpIDList, sPath
    CoTaskMemFree lpIDList
    sPath = StripNulls(sPath)
    GetFileDir = sPath
End Function

Public Function StripNulls(ByVal OriginalStr As String) As String
    If (InStr(OriginalStr, Chr$(0)) > 0) Then
        OriginalStr = Left$(OriginalStr, InStr(OriginalStr, Chr(0)) - 1)
    End If
    StripNulls = OriginalStr
End Function

Public Function FileExists(PrüfnameMsg, SubDir As String)

On Error Resume Next
'Datei schon gespeichert
      changes = False
      Number = 1
      prüfname = PrüfnameMsg
Back:

      Number = Number + 1

       If CreateObject("Scripting.FileSystemObject").FileExists(prüfname) = True Then
        dateiname = CreateObject("Scripting.FileSystemObject").GetBaseName(prüfname)
        dateiendung = CreateObject("Scripting.FileSystemObject").GetExtensionName(prüfname)
        dateinameneu = dateiname & " (" & Number & ")" & "." & dateiendung
        prüfname = SubDir & "\" & dateinameneu
        changes = True
        GoTo Back:
       Else
       End If

        If changes = False Then
         FileExists = PrüfnameMsg
        Else
         FileExists = prüfname
        End If

End Function





vielen Dank im Voraus
Andreas.Fischer
Outlook - Moderator


Verfasst am:
28. Jun 2007, 14:09
Rufname:
Wohnort: Berlin

AW: Outlook-Script zum Speichern einer Mail - AW: Outlook-Script zum Speichern einer Mail

Nach oben
       

Hallo,

Bei mir funktioniert das ganze einwandfrei. Was für eine Fehlermeldung erhälst du den?

_________________
Gruß Andreas

Das besondere Erleben.
Gast



Verfasst am:
28. Jun 2007, 14:34
Rufname:

AW: Outlook-Script zum Speichern einer Mail - AW: Outlook-Script zum Speichern einer Mail

Nach oben
       

Laufzeitfehler '287'
Anwendungs- odder objektdefinieter Fehler

Klicke ich danach auf Debuggen, bekommt ich den Hinweis auf diese Codezeile

Code:

myItem.SaveAs strBackupPath & "\" & CleanString(strname), OLTXT


Würde ich diese Zeile kommentieren, dann speichert der Skript nur die Anhänge einer Email. Die Email Message wird weder in einer msg oder txt Datei gespeichert.[/code]
Andreas.Fischer
Outlook - Moderator


Verfasst am:
29. Jun 2007, 07:58
Rufname:
Wohnort: Berlin


AW: Outlook-Script zum Speichern einer Mail - AW: Outlook-Script zum Speichern einer Mail

Nach oben
       

Hallo,

Das ist ja sehr Mysteriöse. Dieser Fehler tritt meines Wissens nur auf, wenn eine Anwendung versucht auf deine Daten zuzugreifen und du es untersagst.

Das sollt hier aber überhaupt nicht passieren.
Wieviele Mails hast du den markiert?
Hast du noch andere Makros und Add-Ins zulaufen?

_________________
Gruß Andreas

Das besondere Erleben.
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Gehe zu Seite Zurück  1, 2, 3, 4, 5, 6, 7, 8, 9  Weiter
Diese Seite Freunden empfehlen

Seite 2 von 9
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Outlook Mail: Mail Absender falsch 8 Jürgen Eitler 3343 09. Sep 2005, 13:52
Gast Mail Absender falsch
Keine neuen Beiträge Outlook Mail: Outlook 2003 erste Mail wird nicht verschickt 6 Gast 2734 25. Aug 2005, 13:00
Krug Outlook 2003 erste Mail wird nicht verschickt
Keine neuen Beiträge Outlook Mail: Automatische Antworts mail (Urlaubsfunktion) 1 player-1 2825 21. Jul 2005, 20:04
wolf-it Automatische Antworts mail (Urlaubsfunktion)
Keine neuen Beiträge Outlook Mail: Outlook 2003 / Mail Weiterleiten / ich will es merken 4 Iceman008 1595 14. Jul 2005, 10:50
kraemer Outlook 2003 / Mail Weiterleiten / ich will es merken
Keine neuen Beiträge Outlook Mail: Kann man jede Adresse einer eingehenden Mail aut. speichern? 4 landau666 1425 13. Jul 2005, 17:21
Christi@n Kann man jede Adresse einer eingehenden Mail aut. speichern?
Keine neuen Beiträge Outlook Mail: Arbeitsspeicherprob. beim Anlagenhinzufügen einer neuen Mail 4 Tischler 995 11. Jul 2005, 15:19
Christi@n Arbeitsspeicherprob. beim Anlagenhinzufügen einer neuen Mail
Keine neuen Beiträge Outlook Mail: Abwesenheitsassistent, Mails weiterleiten zu ext. Mail 1 nicksan 1929 22. Feb 2005, 11:45
kraemer Abwesenheitsassistent, Mails weiterleiten zu ext. Mail
Keine neuen Beiträge Outlook Mail: Adressauswahl bei neuem Mail gestört 10 swissbird 912 19. Feb 2005, 15:49
macdeal Adressauswahl bei neuem Mail gestört
Keine neuen Beiträge Outlook Mail: Standard Dateiendung bei Speichern von E-Mails ändern 5 S.Thielen 4414 02. Feb 2005, 12:04
kraemer Standard Dateiendung bei Speichern von E-Mails ändern
Keine neuen Beiträge Outlook Mail: Mails in Extra Ordner speichern. 4 Jason 2540 30. Jan 2005, 14:51
Christi@n Mails in Extra Ordner speichern.
Keine neuen Beiträge Outlook Mail: Wie schreibe ich eine html - Mail mit outlook 2 Mike020174 13305 21. Jan 2005, 02:35
Gast Wie schreibe ich eine html - Mail mit outlook
Keine neuen Beiträge Outlook Mail: manuell mail verschicken 2 redrogue 801 04. Jan 2005, 19:13
redrogue manuell mail verschicken
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Excel Tipps