2017-10-29 9 views
0

Das folgende ist ein VBScript (VBS), dass alle MS Outlook verarbeitet MSG-Dateien auf sie fallen gelassen, jeder msg in MS Outlook öffnen die erforderlichen Informationen abzurufen, dann die Datei auf ReceivedTime + Betreff Umbenennung + Sender . Beispiel: 27102017 123241 AM - Besprechungstag - George.msgVBScript Datumsformatierung

Ich habe Schwierigkeiten, das Datumsformat von DDMMYYYY in YYYYMMDD zu ändern. Ich habe varNewFileName ersetzt = ReplaceIllegalCharacters (olkMessage.ReceivedTime ... mit varNewFileName = ReplaceIllegalCharacters (Format (olkMessage.ReceivedTime, "yyyymmdd-hhnnss") ... aber wenn ich das Skript ausführe, wird der neue Dateiname ohne ein Datum und eine Zeit zurückgegeben z. B. - Treffen Agenda - George.msg

Wenn jemand mit der Datumsformatierung helfen könnte, wäre ich sehr dankbar

George

On Error Resume Next 

Dim olkApp, olkMessage, objFSO, objFile, varFile, varNewFileName 
Set olkApp = GetObject(,"Outlook.Application") 
If TypeName(olkApp) = "Nothing" Then 
    Set olkApp = CreateObject("Outlook.Application") 
End If 
Set objFSO = CreateObject("Scripting.FileSystemObject") 
For Each varFile In WScript.Arguments 
    Set olkMessage = olkApp.CreateItemFromTemplate(varFile) 
    varNewFileName = ReplaceIllegalCharacters(olkMessage.ReceivedTime & " " & olkMessage.Subject & " From " & olkMessage.SenderName & " To " & olkMessage.To) & ".msg" 
    Set objFile = objFSO.GetFile(varFile) 
    objFile.Name = varNewFileName 
Next 
Set objFile = Nothing 
Set objFSO = Nothing 
Set olkMessage = Nothing 
Set olkApp = Nothing 
WScript.Quit 

Function ReplaceIllegalCharacters(strSubject) 
    Dim strBuffer 
    strBuffer = Replace(strSubject, ":", "") 
    strBuffer = Replace(strBuffer, "\", "") 
    strBuffer = Replace(strBuffer, "/", "") 
    strBuffer = Replace(strBuffer, "?", "") 
    strBuffer = Replace(strBuffer, Chr(34), "'") 
    strBuffer = Replace(strBuffer, "|", "") 
    ReplaceIllegalCharacters = strBuffer 
End Function 

Antwort

1

Versuchen Sie folgendes:

Set olkMessage = olkApp.CreateItemFromTemplate(varFile) 
tempArray = split(olkMessage.ReceivedTime), " ") 
tempArray(0) = Year(tempArray(0)) & Right("0" & Month(tempArray(0)),2) & Right("0" & Day(tempArray(0)),2) 
myDateTime = join(tempArray, " ") 
varNewFileName = ReplaceIllegalCharacters(myDateTime & " " & olkMessage.Subject & " From " & olkMessage.SenderName & " To " & olkMessage.To) & ".msg" Set objFile = objFSO.GetFile(varFile) 
.

Also, was ich hier getan habe, war, den Wert für das empfangene Datum/Uhrzeit der Nachricht zu nehmen und in ein Array auf das Leerzeichen in der Zeichenfolge zu teilen, die ein Datumselement und ein Zeitelement im resultierenden Array ergibt.

die Werte in den Datumsteil Neuanordnen dann das Array kommen wieder zusammen, und dieser Wert in die Funktion übergeben, statt des Datums Zeit-Attribut des Objekts.

Sollte tun, was Sie brauchen. Entschuldigung, wenn es irgendwelche Tippfehler gibt, während ich mein Handy verwende ...

Lassen Sie mich wissen, wenn Sie etwas geklärt brauchen.

1

Dank einer Million Dave Ihre Antwort wies mich in die richtige Richtung! Nach einigem Lesen habe ich festgestellt, dass VBScript ein anderes FormatDateTime (Datum, Format) verwendet, weshalb ich das Datum nicht auf JJJJMMTT formatieren konnte. Meine aktualisierten Code unten:

For Each varFile In WScript.Arguments 
    Set olkMessage = olkApp.CreateItemFromTemplate(varFile) 
    strReceived = year(olkMessage.ReceivedTime) & _ 
      right("0" & month(olkMessage.ReceivedTime), 2) & _ 
      right("0" & day(olkMessage.ReceivedTime), 2) & " " & _ 
      right("0" & hour(olkMessage.ReceivedTime), 2) & _ 
      right("0" & minute(olkMessage.ReceivedTime), 2) & _ 
      right("0" & second(olkMessage.ReceivedTime), 2) 
    varNewFileName = ReplaceIllegalCharacters(strReceived & " " & olkMessage.Subject & " From " & olkMessage.SenderName & " To " & olkMessage.To) & ".msg" 
    Set objFile = objFSO.GetFile(varFile) 
    objFile.Name = varNewFileName 
Next