【问题标题】:How to make Toaster Notification on Excel with VBA如何使用 VBA 在 Excel 上制作烤面包机通知
【发布时间】:2020-03-11 17:03:06
【问题描述】:

我想在 Excel 上创建/使用烤面包机通知。因为我们已经使用 MsgBox 来通知用户发生了什么事。

但这会使脚本停止(暂停)。

你知道怎么做吗? 在谷歌上有“系统托盘通知”,但它需要很多代码,这是一种旧方法。找不到新方法了。

例如,来自 SAP 的插件:“Analysis For Office”将通知放在 Excel 上。

【问题讨论】:

  • 看起来您需要使用一些自定义 DLL 文件,您可以使用 UserForms 构建一个非常糟糕的版本,但它不会那么好。 Here's 之前关于类似主题的帖子
  • 如果你只想显示一个Msgbox,你能不能在excel代码继续运行的同时触发VBScript来做到这一点?
  • 您可以在 vbModeless 状态下显示用户窗体,并在代码完成后将其隐藏。不需要外部库。
  • 谢谢,我用无模式和“等待”尝试了 msgbox 和用户窗体。但它会使屏幕阻塞。所以实际上就是让计时器在后台等待。 (无模宏so)

标签: excel vba sap


【解决方案1】:

我也有类似的需求(主要是调试)

我的解决方案是弹出一个带有单个标签控件的小表单,并在 4 秒后将其卸载。表单属性设置为不显示模式等。

在 VBA“模块”中

Private mFrmToast As frmToast
Public Sub clearToast()
    On Error Resume Next
    If Not mFrmToast Is Nothing Then


        mFrmToast.Hide
        Unload mFrmToast

        Set mFrmToast = Nothing

    End If
End Sub
Public Sub showToast(message As String)
    On Error GoTo er_clear_in_4
    If mFrmToast Is Nothing Then
        Set mFrmToast = New frmToast
    End If
    mFrmToast.message = message
    If Not mFrmToast.Visible Then
        Call mFrmToast.Show(False)
    End If
    er_clear_in_4:
    Application.OnTime Now + TimeValue("00:00:04"), "clearToast"

End Sub

表单“代码隐藏”模块包含一个示例只写属性“消息”。

Option Explicit

Public Property Let message(ByVal sMessage As String)
  lblMessage.Caption = sMessage
End Property

用法很简单 showToast("你的留言")

【讨论】:

    【解决方案2】:

    使用 SAP 的“Analysis For Office”插件,您可以定义消息并将它们添加到标准 SAP-AnalysisForOffice 消息对话框:

    Dim lResult As Long
    
    lResult= Application.Run("SAPAddMessage", "This is a new error message!", "ERROR")
    
    The message 'This is a new error message' with severity Error is displayed in the message dialog.
    

    它会和我的问题发送的图片一样。

    Source

    Details about SAPAddMessage

    【讨论】:

      【解决方案3】:

      我研究过一次,几乎完全放弃了它,直到我发现了一种在不暂停执行的情况下提醒用户信息的相当“欺骗性”的方法,该方法适用于我的用户计算机。

      我们在这里运行 Windows 10 并安装了 SCCM 用于软件分发和更新。我绝对不知道这是否在 Windows 中强制更新,所以我不知道这是否适合你.. 但如果你不介意,下面的代码在这里可以享受类似于软件中心通知的通知:

      Sub Toastnote(ccmTitle, ccmText)
          Shell "c:\windows\ccm\sctoastnotification.exe """ & ccmTitle & """ """ & ccmText & """ "
      End Sub
      

      你可以这样称呼它:

      toastnote "title goes here","message goes here" 
      

      它会创建一个如下所示的小弹出窗口:

      正如我所说,这有点作弊,可能会使定期收到 CCM 通知的用户感到困惑,但对于我的用户群来说,这不是问题。

      最后,可能值得将其包装在一个检查 .exe 文件是否存在的 IF 语句中 - 只是一个想法..

      【讨论】:

      • 完美的想法,谢谢,但我找不到要运行的 exec。
      • 搜索了我的整个 Windows 10 驱动器,但没有 sctoastnotification.exe
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-03
      • 1970-01-01
      • 1970-01-01
      • 2010-09-27
      • 2018-02-26
      • 2017-03-19
      相关资源
      最近更新 更多