2017-10-29 4 views
0

以下は、MS Outlookの.msgファイルをすべて処理し、必要な情報を取得するためにMS Outlookで各.msgを開き、ファイルの名前をReceivedTime + Subject + SenderNameに変更するVBScript(.vbs) 。たとえば、27102017 123241 AM - 会議の議題 - George.msgVBScriptの日付の書式

日付の形式をDDMMYYYYからYYYYMMDDに変更するのが難しいです。私はvarNewFileName = ReplaceIllegalCharacters(olkMessage.ReceivedTime ...を置き換えましたvarNewFileName = ReplaceIllegalCharacters(Format(olkMessage.ReceivedTime、 "yyyymmdd-hhnnss")...)しかし、私はスクリプトを実行すると、新しいファイル名は日付と時間なしで返されます例えば、 - 会議の議題 - George.msg

誰もが、私は非常に感謝される書式設定の日付を支援することができれば

ジョージ

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 

答えて

1

これを試してみてください:。

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) 

私がここで行ったことは、メッセージの受信日時の値を文字列のスペース上の配列に分割し、結果の配列に日付要素と時間要素を与えることでした。

日付部分に値を並べ替え、配列を再び結合し、この値をオブジェクトの日付時刻属性の代わりに関数に渡します。

必要な作業を行う必要があります。私の携帯電話を使用しているので、何か誤字がある場合はお詫び...

明確に何かを必要とするかどうか教えてください。

1

あなたの回答が正しい方向に私を指摘しました。いくつかの読書をした後、私はVBScriptがFormatDateTime(日付、形式)の異なるsytaxを使用していることに気付きました。これはyyyymmddに日付を設定できなかった理由です。下に更新されたコード:

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