【问题标题】:Apply action only when in specific Outlook account仅在特定 Outlook 帐户中应用操作
【发布时间】:2020-06-23 08:05:33
【问题描述】:

我将默认字符串应用于所有新电子邮件的主题字段的开头。

我有两个 Outlook 用户帐户/PST 文件 - 个人和企业。我希望仅在使用企业帐户时将主题字符串添加到电子邮件中。

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
If MsgBox("Send with 'Myrtleford Festival" at start of subject?", vbYesNo, "Send as Festival mail") = vbYes Then
    If (Left(Trim(Item.Subject), 11)) <> "The " Then
        Item.Subject = "The Myrtleford Festival 2012/ " + Item.Subject
    End If
End If
End Sub

【问题讨论】:

    标签: vba outlook outlook-2007


    【解决方案1】:

    这是一种方法的基础。

    自从我拥有多个帐户以来,有些时候,但当我这样做时,顶级文件夹非常不同。下面的代码将顶级文件夹的名称输出到立即窗口。在我当前的系统上,这将给出:

    Personal Folders
    Archive Folders
    Test Folders
    

    如果您的两个帐户有不同的顶级文件夹,您可以将您的帐户与此区分开来。

    如果您喜欢这种方法但顶级文件夹是相同的,我有一个例程可以在层次结构中的任何深度搜索特定文件夹。即使主文件夹相同,我假设某些子文件夹是不同的。

    Sub AnswerA()
    
      Dim InxIFLCrnt As Integer
      Dim TopLvlFolderList As Folders
    
      Set TopLvlFolderList = _
              CreateObject("Outlook.Application").GetNamespace("MAPI").Folders
    
      For InxIFLCrnt = 1 To TopLvlFolderList.Count
        Debug.Print TopLvlFolderList(InxIFLCrnt).Name
      Next
    
    End Sub
    

    【讨论】:

    • 嗨托尼。抱歉,我匆忙写下了我的问题并使用了错误的术语。实际上,我有 2 个 Outlook 配置文件,每个配置文件都有一个单独的 .pst 文件。我只希望在使用其中一个配置文件时应用 VBA 例程。柯克
    • 这就是我以为你的意思。我假设两个 PST 文件中的文件夹结构不同。如果是这样,您可以通过特定文件夹的存在或不存在来区分它们。上面的代码只查看顶级文件夹。也许这已经足够了。如果没有,我可以在我的答案中添加另一个例程来搜索整个层次结构。
    【解决方案2】:

    好的,很酷。事实上,我偶然发现了一个完全万无一失且优雅的解决方案。在 Outlook 的信任中心>宏安全中,我选择了“警告所有宏”选项。现在,当我打开 Outlook 到我的任何个人资料时,我会弹出一个窗口,询问我是否要启用/禁用宏。由于 VBA 脚本是唯一运行的宏,因此我可以轻松筛选是否使用默认主题字符串。这将永远 100% 的工作(因为我看不出我将使用另一个宏/VBA 脚本的任何理由)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-11
      • 2019-12-24
      • 1970-01-01
      • 2014-02-06
      • 2015-07-26
      相关资源
      最近更新 更多