Я недавно обновился с Outlook 2010 до Exchange / 365. У меня есть скрипт в ThisOutlookSession, который прекрасно работал до обновления. Следует сохранить сообщение электронной почты, которое добавляется в папку «Ordercomfirmations» в папке дела на сервере, но я не могу заставить его работать.
Есть ли способ отладки кода в VBA или я придется угадать мой путь через "trial'n'error". Или в Outlook произошли изменения, которых я еще не заметил.
К вашему сведению, у меня нет формального обучения программированию. Вот сценарий, который больше не работает. (Конфиденциальная информация удалена)
Public WithEvents objMails As Outlook.Items
Private Sub Application_Startup()
Dim myNamespace As NameSpace
Dim folderIB As Outlook.Folder
Dim folderOB As Outlook.Folder
Set myNamespace = GetNamespace("MAPI")
Set folderIB = myNamespace.GetDefaultFolder(olFolderInbox)
Set folderOB = folderIB.Folders("Ordercomfirmations")
Set objMails = folderOB.Items
End Sub
Private Sub objMails_ItemAdd(ByVal oItem As Object)
Dim sPath As String
Dim dtDate As Date
Dim sName As String
Dim sYear As String
Dim sCase As String
Dim sCoN As String
sName = oItem.Subject
'Is the ordercomfirmations nr. over 10000?
If Mid(sName, 29, 2) = "fr" Then
'No
sYear = Mid(sName, 59, 2)
sCase = Mid(sName, 59, 5)
sCoN = Mid(sName, 59, 3)
Else
'Yes
sYear = Mid(sName, 60, 2)
sCase = Mid(sName, 60, 5)
sCoN = Mid(sName, 60, 3)
End If
'I dont remember what "sCoN" stands for, but it's used to check if it's a case or not
'Probably stands for Case or Not
If Val(sCoN) > 0 Then
sName = Replace(sName, ".", " ")
sName = Replace(sName, "/", " ")
sName = Replace(sName, "\", " ")
sName = Replace(sName, ":", " ")
sName = Replace(sName, "?", " ")
sName = Replace(sName, Chr(34), "")
sName = Replace(sName, "<", " ")
sName = Replace(sName, ">", " ")
sName = Replace(sName, "|", " ")
dtDate = oItem.ReceivedTime
sName = Format(dtDate, "yyyy-dd-mm_", vbUseSystemDayOfWeek, vbUseSystem) & Format(dtDate, "hh.nn.ss", vbUseSystemDayOfWeek, vbUseSystem) & " " & sName & ".msg"
sPath = "\\server\Cases\20" & sYear & "\" & sCase & "\Email\"
If Dir(sPath & sName) = "" Then
oItem.SaveAs sPath & sName, olMsg
End If
End If
End Sub
Это пример темы одного из писем
'Ordercomfirmations nr. XXXX from Company / Your order nr. XXXXX
'Ordercomfirmations nr. 6411 from Company / Your order nr. 17731
'1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
'O r d e r c o m f i r m a t i o n s _ n r . _ 6 4 1 1 _ f r o m _ C o m p a n y _ / _ Y o u r _ o r d e r _ n r . _ 1 7 7 3 1
'Mid(sName, 29, 2) = "fr" sYear = "17" sCase = "17731" sCoN = "177"
'sPath = "\\server\Cases\2017\17731\Email\"