2017-10-29 9 views
0

다음은 MS Outlook의 각 .msg 파일을 열어 필요한 정보를 검색 한 다음 파일 이름을 ReceivedTime + Subject + SenderName으로 변경하는 모든 MS Outlook .msg 파일을 처리하는 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

감사합니다. Dave의 답변으로 올바른 방향으로 나를 가리켰습니다! 몇 가지 독서를 한 후에 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