Коды Outlook vba, сохраненные в application_reminder, не всегда работают - PullRequest
0 голосов
/ 09 мая 2020

Я разработал простое решение, позволяющее группе из пяти человек автоматически получать информацию о том, выполнены ли ежедневные критические задачи команды или нет. Я создаю отдельную задачу для каждого из них и устанавливаю напоминания о задачах так же, как и время задач (0 минут до этого). Структура такая; владелец задачи завершает задачу, делает снимок экрана (в качестве доказательства. Это обязательно) и сохраняет его с предопределенным именем файла в указанной c папке (file.jpg).
Всплывает напоминание о связанной задаче Outlook, запускайте коды искать этот файл, и если он находит файл, ничего не делает; если файл не существует, отправляет команде электронное письмо о том, что задача не завершена. Коды сохраняются в application_reminder Outlook, и у меня также есть несколько функций, сохраненных в модуле. Коды работают хорошо после срабатывания напоминаний о задачах для первых одного или двух экземпляров, но затем по какой-то причине перестают работать. Напоминание появляется, но коды не запускаются.

  1. Есть идеи, почему коды не работают? Есть ли какое-то исправление или что-то
    относительно этой проблемы?
  2. Любые другие решения, которые вы знаете, делают то, что я пытаюсь сделать.
  3. Могу ли я преобразовать это в проект vsto? Может ли это быть более эффективное решение? (До сих пор я ничего не делал в Visual Studio, но хочу начать его использовать)

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

Private Sub Application_Reminder(ByVal Item As Object)

    Dim objPeriodicalMail As MailItem
    If Item.Categories = "Screenshot" Then
        Call Screenshot(Item.Subject)
    End If

End Sub
*************************
Function reppdate() As Date  'returns previous working date
Dim yest As Date
Dim tatiller As Variant
tatiller = Array("19.05.2020", "06.05.2020", "05.05.2020", "04.05.2020", "01.05.2020", "01.01.2020")  'local holidays
j = -1

For i = 0 To UBound(tatiller)
    yest = Format(DateAdd("w", j, Now()), "dd.mm.yyyy")
    If yest = tatiller(i) Then
            If Weekday(yest) = 2 Then
                j = j - 3
            Else: j = j - 1
            End If
    Else
        If j < -1 Then
        Exit For
        Else: End If
    End If
Next i
reppdate = yest
End Function
**************************************
Sub Screenshot(dosya As String)
yestt = reppdate()
Dim objMsg As MailItem
Set objMsg = Application.CreateItem(olMailItem)
vamsg = "Dikkat, " & dosya & ".jpg bulunamadi, rapor gönderilmemis mi!"
dosyaadi1 = "c:folder\" & Format(yestt, "yyyymm") & "\Daily\" & Format(yestt, "dd") & "\" & dosya & ".jpg"
baglanti = "<a href=" & dosyaadi1 & ">" & vamsg & "</a>"

            If FileFolderExists(dosyaadi1) = False Then
            msg = vamsg
            Else
            End If

      objMsg.To = "vvvvv.com"
      objMsg.Subject = msg
      objMsg.Body = msg & " - " & dosyaadi1
      objMsg.Send

      Set objMsg = Nothing

End Sub

1 Ответ

0 голосов
/ 09 мая 2020
  1. Значение свойства Categories может включать другие назначенные строковые категории. Поэтому я бы предложил вместо этого проверить подстроку с определенным значением.
Contains = InStr(strBaseString, strSearchTerm)

Categories - это разделенная строка имен категорий, назначенных элементу Outlook. Это свойство использует символ, указанный в имени значения, sList, в HKEY_CURRENT_USER \ Control Panel \ International в реестре Windows в качестве разделителя для нескольких категорий. Чтобы преобразовать строку имен категорий в массив имен категорий, используйте функцию Microsoft Visual Basi c Split.

Я бы посоветовал запустить код под отладчиком и посмотреть, как он работает, а где не работает. Также вы можете добавить процедуру обработки ошибок, см. Обработка ошибок в VBA .

Прямого переноса нет. По сути, вы должны создать новый проект надстройки и добавить туда свой обработчик событий. Затем вы можете преобразовать код из обработчиков событий VBA в надстройки. См. https://docs.microsoft.com/en-us/previous-versions/office/developer/office-2007/aa830702 (v = office.12)? Redirectedfrom = MSDN и Создание надстроек VSTO для Office с помощью Visual Studio для получения дополнительных сведений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...