Ежедневно сохраняйте электронные письма, включая дубликаты имен файлов.

Я пишу макрос, который будет ежедневно сохранять электронные письма. Я просто подумал о ситуации, которая может произойти. Иногда я получаю электронные письма с одной и той же темой от отправителя, но каждое письмо имеет разное содержание. Я хотел бы иметь набор операторов, которые будут обрабатывать это. Может быть, сказать, что это копия, или, может быть, даже добавить время к имени файла. Это код, который у меня есть прямо сейчас.

Public Sub SaveMsgs(Item As Outlook.MailItem)
 Dim sPath As String
 Dim dtDate As Date
 Dim sName As String
 Dim enviro As String
 Dim sSender As String
 Dim strFolder As String
 Dim strNewFolder As String
 Dim save_to_folder As String
 Dim strMyPath as String
 Dim intCount as Integer
 Dim 

 enviro = CStr(Environ("USERPROFILE"))

 sName = Item.Subject
 ReplaceCharsForFileName sName, "_"

 sSender = Item.Sender

 dtDate = Item.ReceivedTime
 sName = sSender & " - " & sName & ".msg"

 strNewFolder = Format(Date, "mm-dd-yyyy")
 strFolder = "C:\IT Documents\" & strNewFolder & "\"

 If Len(Dir(strFolder, vbDirectory)) = 0 Then
   MkDir (strFolder)
 End If

 save_to_folder = strFolder

 Item.SaveAs save_to_folder & sName, olMSG
End Sub

Private Sub ReplaceCharsForFileName(sName As String, _
     sChr As String _)

 sName = Replace(sName, "/", sChr)
 sName = Replace(sName, "\", sChr)
 sName = Replace(sName, ":", sChr)
 sName = Replace(sName, "?", sChr)
 sName = Replace(sName, Chr(34), sChr)
 sName = Replace(sName, "<", sChr)
 sName = Replace(sName, ">", sChr)
 sName = Replace(sName, "|", sChr)
End Sub

Вот код, о котором я думал добавить.

Do While True 
  strMyPath = strFolder & sName 
  If objFSO>FileExists(strMyPath) Then 
    intCount = intCount + 1 
    sName = Copy (" & intCount & ") 
  Else Exit Do 
  End If 
Loop

Будет ли что-то подобное работать для того, что я пытаюсь сделать, или было бы лучше добавить время к имени файла?


person novicevba    schedule 11.05.2015    source источник
comment
Сначала, пожалуйста, удалите этот Dim в конце ваших объявлений ;).   -  person shA.t    schedule 12.05.2015


Ответы (1)


Чтобы сохранить с помощью Date Time Seconds & Subject, вы можете сделать

 sName = Format(dtDate, "MM-DD-YYYY", vbUseSystemDayOfWeek, _
                    vbUseSystem) & Format(dtDate, "-hhnnss", _
                    vbUseSystemDayOfWeek, vbUseSystem) & "-" & sName & ".msg"
person 0m3r    schedule 12.05.2015
comment
Спасибо за помощь. Это, кажется, сделало свое дело. Теперь я работаю над тем, чтобы он не отображался как одна строка без каких-либо разделительных знаков. Но я могу поиграть с этим. Но у меня есть еще одна проблема, которую я только что заметил, по какой-то причине ответное электронное письмо возвращается с типом файла файла, а не с .msg. Например, я получил электронное письмо от Джо, я отвечаю, а затем Джо отвечает, что ответ приходит как тип файла файла. Есть идеи, почему это так? Я перечитал код, и я не могу понять это прямо сейчас. - person novicevba; 12.05.2015