|
Outlook-Script zum Speichern einer Mail
|
| Autor |
Nachricht |
chales
Mit wenigen Programmier - Kentnisse
Verfasst am: 28. Jan 2008, 16:21 Rufname:
|
|
| |
|
Jetzt geht alles in T:\Rezepte\ ohne dass ich einen Ordner wählen kann. ALso ohne Nachfrage und Auswahlmöglichkeit.
Eigentlich wollte ich das Vorgabeverzeichnis c:\ auf T:\Rezepte\
ändern. So dass man nicht von C:\ aus durch die ganze Ordnerstruktur klicken muß.
_________________ Learning by doing
|
|
Andreas.Fischer
Outlook - Moderator

Verfasst am: 28. Jan 2008, 16:29 Rufname:
Wohnort: Berlin
|
| |
| |
|
Das ist hier leider nicht möglich bzw. hab ich noch nicht geschafft.
_________________ Gruß Andreas
Das besondere Erleben.
|
|
chales
Mit wenigen Programmier - Kentnisse
Verfasst am: 01. Feb 2008, 14:30 Rufname:
|
|
| |
|
Folgender Bug ist mir aufgefallen:
Wenn man beim Speichern des Mail auf abbrechen drückt wird dieses trotzdem gespeichert und zwar direkt in c:\.
_________________ Learning by doing
|
|
Andreas.Fischer
Outlook - Moderator

Verfasst am: 04. Feb 2008, 10:08 Rufname:
Wohnort: Berlin
|
|
| |
|
Hallo,
Füge bitte nach der Zeile strBackupPath = GetFileDir die Zeile | Code: | | If strBackupPath = "" Then Exit Sub | ein.
Und Danke für den Hinweis.
_________________ Gruß Andreas
Das besondere Erleben.
|
|
chales
Mit wenigen Programmier - Kentnisse
Verfasst am: 05. Feb 2008, 08:07 Rufname:
|
| |
| |
|
| Andreas.Fischer - 23. Jan 2008, 08:53 hat folgendes geschrieben: | Hi,
Mit myitem.FlagStatus = olFlagComplete kennzeichnet du die E-mail als erledigt. |
Wo muss ich das den setzen, dass das funktioniert ??
Es sollen nur die abgelegten gekennzeichnet werden.
Bei abbrechen darf nichts gekennzeichnet sein.
_________________ Learning by doing
|
|
chales
Mit wenigen Programmier - Kentnisse
Verfasst am: 27. Feb 2008, 10:43 Rufname:
|
|
| |
|
Gibt es eine Möglichkeit zu prüfen ob das Mail schon in dem Verzeichnis vorhanden ist ?
Vergleich mit Datum und Betreff ?
Gruß
_________________ Learning by doing
|
|
Andreas.Fischer
Outlook - Moderator

Verfasst am: 10. März 2008, 08:53 Rufname:
Wohnort: Berlin
|
|
| |
|
Hallo Chales,
Du kannst mit folgendem Codeteil überprüfen, ob eine E-Mail unter gleichen Namen schon gespeichert ist: | Code: | ' Datei schon gespeichert
Prüfname = strBackupPath & "\" & CleanString(StrName)
If CreateObject("Scripting.FileSystemObject").FileExists(Prüfname) = True Then
... ' Was soll passieren, wenn eine Mail schon existiert.
Else
myItem.SaveAs Prüfname, olTXT
End If |
Dieses füge als Ersatz für die Zeile myItem.SaveAs strBackupPath & "\" & CleanString(StrName), olTXT ein.
_________________ Gruß Andreas
Das besondere Erleben.
|
|
Gast
Verfasst am: 09. Jul 2008, 22:56 Rufname:
|
|
| |
|
Die Dateinamen-Bereinigung habe ich so gelöst:
| Code: |
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Name: FileSysName
' letzte Änderung: 29.01.2004
' Autor: tm
' Beschrieb: Ersetzt alle in einem Dateinamen ungültigen
' Zeichen mit einem Underline
' Aufgerufen von: saveAllMsg
' übergebene Parameter: Nachrichten-Betreff
' zurückgebende Parameter: String Dateiname mit Endung ".msg"
'
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Function FileSysName(strSubject As String) As String
Dim strInvalid As String
Dim i As Long
strInvalid = "\/:+*?<>|" & Chr$(34)
For i = 1 To Len(strSubject)
If InStr(strInvalid, Mid$(strSubject, i, 1)) <> 0 Then
Mid$(strSubject, i, 1) = "_"
End If
Next i
FileSysName = strSubject & ".msg"
End Function
|
Nur so am Rande...
|
|
Lif3styl3
Gast
Verfasst am: 28. Jul 2008, 11:29 Rufname:
|
|
| |
|
Hi,
dieses Script ist im Grunde genau das was ich suche. Nun meine Frage. Funktioniert das ganze auch mit Outlook Express ??
MFG
L!f3
|
|
Andreas.Fischer
Outlook - Moderator

Verfasst am: 28. Jul 2008, 13:36 Rufname:
Wohnort: Berlin
|
|
| |
|
Hallo,
In Outlook Express kann man nicht mit Makros arbeiten.
_________________ Gruß Andreas
Das besondere Erleben.
|
|
Lif3styl3
Gast
Verfasst am: 28. Jul 2008, 15:00 Rufname:
|
|
| |
|
| Gibt es für Outlook Express irgendeine ähnliche Möglichkeit ?? bzw. kann man etwas ähnliches machen um das zu erreichen ?
|
|
Andreas.Fischer
Outlook - Moderator

Verfasst am: 29. Jul 2008, 07:25 Rufname:
Wohnort: Berlin
|
|
| |
|
Hallo,
| Lif3styl3 - 28. Jul 2008, 15:00 hat folgendes geschrieben: | | Gibt es für Outlook Express irgendeine ähnliche Möglichkeit ?? bzw. kann man etwas ähnliches machen um das zu erreichen ? | Eine Liste von Tools für Outlook Express findest du hier.
_________________ Gruß Andreas
Das besondere Erleben.
|
|
Lif3styl3
Gast
Verfasst am: 07. Aug 2008, 12:28 Rufname:
|
|
| |
|
Vielen Dank für deine Antwort,...
wir haben uns nun aber doch für Outlook entschieden. Gibt es da ein Makro oder Tool welches alle eingehenden Mails als txt Datei im Filesystem ablegt ??
Schön wäre auch eine Unterscheidung zwsichen HTML und TXT Datei und dann je nach Dateityp abspeichern. ist aber erstmal optional und kann denke ich schnell nachprogrammiert werden.
Bin leider völlig neu in programmierung von Makros,...
Schon mal vilen Dank.
L!f3
|
|
andy-v
Anfänger, werde es aber auch noch lernen
Verfasst am: 08. Aug 2008, 22:14 Rufname:
|
|
| Version: Office 2003 |
|
Hallo miteinander,
ich habe den Thread schon einige Zeit verfolgt und habe mich sehr gefreut, dass ich endlich zu großen Teilen gefunden habe, was ich gesucht habe. Zwischenzeitlich habe ich einen Button zum Aufrufen des VBA-Scripts "Mail sichern" eingebunden und die Mails werden wunderbar gesichert. Befindet sich jedoch innerhalb den markierten Mails noch ein zugesandter Termin, bricht die Sicherung ab. Gibt es eine Möglichkeit, diese Termine ebenfalls zu sichern oder zumindest zu "ignorieren"?
Wenn ja würde ich mich auf über eine Hilfestellung freuen. Meine VBA-Kenntnisse sind leider nur sehr rudimentär.
Viele Grüße und meinen Respekt an die Leute, die das können.
Andy
|
|
s.a.m.
Gast
Verfasst am: 25. Aug 2008, 22:52 Rufname:
|
| |
| |
|
hallo,
hab mir den code aus dem thread zusammenkopiert.
funktioniert soweit eigentlich ganz gut, vielen dank an die ersteller
jedoch hätte ich gern, dass der Ordner in dem die anhänge gespeichert werden auch mit Datum benannt wird (Datum_Betreff).
und dass bei gleichem dateinamen nicht hochgezählt wird (also ein (2) angehängt wird), sondern einfach zur nächsten gesprungen wird ?
vielen dank im vorraus.
hier mein code:
| 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 SpeichernalsTXT()
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
If strBackupPath = "" Then Exit Sub
Set olSelection = myExplorer.Selection
For Each myItem In olSelection
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, "yyyy-mm-dd-hh-mm") & "_" & .Subject & "_" & .SenderName ' & "_" & fstTo
strname = IIf(Len(strBackupPath & itemName) > 255, _
Left(itemName, 255 - Len(strBackupPath)), itemName) & ".txt"
End With
'Ist Datei schon vorhanden
strtestname = strBackupPath & "\" & CleanString(strname)
myItem.SaveAs FileExists(strtestname, strBackupPath), oltxt
'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, ">", "")
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 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
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
|
|
|
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 |
 |
Outlook VBA und Formulare: E Mail öffnen per VBA |
2 |
PM1 |
298 |
08. Apr 2010, 14:06 PM1  |
 |
Outlook Hilfe: Persönliche Anrede in einer Serien-E.mail |
1 |
hu.pf. |
403 |
24. Jan 2010, 21:12 Christi@n  |
 |
Outlook Mail: Mail aus Internet-Explorer |
1 |
***Micha*** |
137 |
14. Nov 2009, 14:37 Christi@n  |
 |
Outlook Mail: Wie kann ich am besten eine Werbe -Mail versenden? |
4 |
Gast |
1552 |
22. Sep 2009, 13:31 ae  |
 |
Outlook VBA und Formulare: Problem mit Script zum Öffnen & Speichern von Emails |
2 |
hinnerk123 |
456 |
29. Jul 2009, 16:30 RobaL  |
 |
Outlook VBA und Formulare: Anhänge speichern |
23 |
Azubi-Steffi |
2166 |
01. Feb 2009, 17:37 Whistler  |
 |
Outlook Mail: Selbe Mail kommt immer wieder an.. |
2 |
Noid |
1203 |
16. Okt 2008, 21:04 Gast  |
 |
Outlook Mail: Übertragung der "gelesen" Mail in Status beim Ur D |
2 |
Gast 081545 |
238 |
28. Jul 2008, 10:16 Gast 081545  |
 |
Outlook Mail: Suche (noch besser View) in Inbox nach "externer" |
1 |
dreimal7 |
233 |
03. März 2008, 23:04 Gast  |
 |
Outlook Mail: Anhänge automatisch in Ordner speichern |
2 |
Gast |
1489 |
08. Jan 2008, 16:50 Andreas.Fischer  |
 |
Outlook Mail: Mail Auto-Save Add-in/Utility für Outlook 2003 |
1 |
Sir_Raise_A_Lot |
841 |
05. Dez 2007, 11:49 Andreas.Fischer  |
 |
Outlook Mail: Mail hängt im Posteingang Outlook 2000 |
1 |
Elton03 |
1180 |
16. Nov 2007, 18:02 Christi@n  |
| |
|