首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >保存在application_reminder下的Outlook代码并不总是工作的

保存在application_reminder下的Outlook代码并不总是工作的
EN

Stack Overflow用户
提问于 2020-05-09 12:09:00
回答 1查看 196关注 0票数 0

我设计了一个简单的解决方案,让一个由五个人组成的团队自动了解团队的日常关键任务是否已经完成。我为每个任务创建一个单独的任务,并设置任务的提醒与任务的时间相同(前0分钟)。结构是这样的;任务所有者完成任务,以屏幕截图(作为证据)。这是必须的),并以预定义的文件名保存在特定的文件夹(file.jpg)中。

弹出相关的outlook任务提醒,运行查找该文件的代码,如果它找到该文件,则什么也不做;如果该文件不存在,则向团队发送一封电子邮件说明任务未完成。代码保存在outlook的application_reminder下,我还有几个函数保存在一个模块下。在第一个或两个实例被任务提醒触发后,代码运行良好,但由于某种原因,代码停止工作。提示弹出,但代码不运行。

  1. 你知道为什么密码不起作用吗?有什么办法吗? 关于这个问题?
  2. 你知道的其他解决办法,做我想做的事。
  3. 我能把它转换成一个vsto项目吗?这是否是一个更有效的解决办法?(到目前为止,我在视频演播室里什么也没做,但我想开始使用它)

我把密码贴在下面只是为了供你参考。正如我所说的,代码只适用于最初的情况。但改进建议总是受欢迎的。

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-09 14:00:28

  1. Categories属性值可能包括指定的另一个字符串类别。因此,我建议检查一个具有特定值的子字符串。
代码语言:javascript
复制
Contains = InStr(strBaseString, strSearchTerm)

Categories是已分配给Outlook项的类别名称的分隔字符串。此属性使用Windows \International中的值名称sList中指定的字符作为多个类别的分隔符。若要将类别名称字符串转换为类别名称数组,请使用Microsoft函数Split

  1. 我建议在调试器下运行代码,看看它是如何工作的,以及它在哪里失败。另外,您可以添加一个错误处理例程,请参阅VBA中的错误处理
  2. 没有直接移民。基本上,您必须创建一个新的外接程序项目,并在那里添加您的事件处理程序。然后,可以将代码从VBA事件处理程序模式转换为外接程序处理程序。有关更多信息,请参见https://learn.microsoft.com/en-us/previous-versions/office/developer/office-2007/aa830702(v=office.12)?redirectedfrom=MSDN使用为Office创建VSTO外接程序
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61696483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档