Скрипт ThisOutlookSession не работает после обновления до Exchange - PullRequest
0 голосов
/ 10 января 2020

Я недавно обновился с 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\"

1 Ответ

0 голосов
/ 16 января 2020

Итак, я получил его на работу, и я не знаю как. У меня появилась идея использовать ящики для сообщений для отладки, и после добавления только одного он просто начал работать.

Так что теперь он просто работает, с или без окна сообщений, да.

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

Думаю, я теперь волшебник, смеется.

...