首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于vba的Azure分类

基于vba的Azure分类
EN

Stack Overflow用户
提问于 2018-02-27 07:25:26
回答 9查看 21.3K关注 0票数 5

我有一个宏,可以创建和保存多个word和excel文档。最近,我的组织开始使用微软的Azure保护。它总是要求用户在保存文档时选择分类标签。有什么办法可以从VBA传递标签吗?(即通过代码控制分类)

我试图搜索现有的问题,但没有运气。

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2021-04-28 13:42:20

我至少找到了Excel的解决方案。对于Outlook,我使用类似于HaPi的方法。

首先设置一个标签,然后使用下面的代码检查所选标签的对象详细信息(例如,在Locals窗口中):

代码语言:javascript
运行
复制
Set current_label = ThisWorkbook.SensitivityLabel.GetLabel()

然后在新工作簿中的创建label_info对象并填充current_label对象的详细信息:

代码语言:javascript
运行
复制
Set label_info = ActiveWorkbook.SensitivityLabel.CreateLabelInfo

With label_info
      .ActionId = "" 'fill
      .AssignmentMethod = MsoAssignmentMethod.PRIVILEGED 'fill
      .ContentBits = 0 'fill
      .IsEnabled = True
      .Justification = "" 'fill
      .LabelId = "" 'fill
      .LabelName = "" 'fill
      .SetDate = Now()
      .SiteId = "" 'fill
End With

在的末尾使用当前工作簿上的SetLabel()

代码语言:javascript
运行
复制
ActiveWorkbook.SensitivityLabel.SetLabel label_info, CreateObject("scripting.dictionary")

注:

  • 更改不会立即可见,标签将在后台设置。
  • 保存带有标签选择的文件时,不存在msgbox。
  • 重新打开excel后,通常会选择标签。
  • 我不确定第二个Context参数在SetLabel()函数中做什么,所以我刚刚在那里创建了空对象

测试用例:

代码语言:javascript
运行
复制
Sub set_label()
    ' Select label first
    Set current_label = ThisWorkbook.SensitivityLabel.GetLabel()
    
    msgbox "Check current_label details and fill below parameters"
    debug.assert False

    Workbooks.Add

    Set label_info = ActiveWorkbook.SensitivityLabel.CreateLabelInfo

    With label_info
          .ActionId = "" 'fill
          .AssignmentMethod = MsoAssignmentMethod.PRIVILEGED 'fill
          .ContentBits = 0 'fill
          .IsEnabled = True
          .Justification = "" 'fill
          .LabelId = "" 'fill
          .LabelName = "" 'fill
          .SetDate = Now()
          .SiteId = "" 'fill
    End With

    ActiveWorkbook.SensitivityLabel.SetLabel label_info, CreateObject("scripting.dictionary")
    ActiveWorkbook.SaveAs Environ("USERPROFILE") & "\Desktop\wb with label.xlsx"
    Workbooks("wb with label.xlsx").Close True
End Sub

其他资源:

  1. https://learn.microsoft.com/pl-pl/office/vba/api/office.labelinfo
  2. https://learn.microsoft.com/pl-pl/office/vba/api/office.sensitivitylabel
票数 2
EN

Stack Overflow用户

发布于 2019-01-23 13:07:01

似乎在一年多之后,仍然没有解决办法。至少我没有为AIP找到任何本地VBA集成。

然而,我为自己找到了一个解决办法。基本上,我现在手动创建一个邮件草稿,在那里我手动选择分类。此草案保留在outlook中的一个特殊文件夹中。一旦我需要通过VBA发送邮件,我复制草稿(分类包括!),我改变收件人,对象,身体和我能够发送它没有用户的互动从VBA,因为分类已经完成。

代码语言:javascript
运行
复制
Private Sub Email()
    Dim oMailItem As Outlook.MailItem
    'Set oMailItem = Outlook.Application.CreateItem(olMailItem)
    'Choose template according to subject
    'I have one template for each sensitivity classification
    Set oMailItem = getVbaTemplateMail("VBA Template - Sensitivity=General")
    With oMailItem
    .To = "mail@a.b"
    .subject = "Email Test using VBA"
    .Body = "Test"
    .Display
    .Send
    End With
    Set oMailItem = Nothing
End Sub

Private Function getVbaTemplateMail(subject As String) As Outlook.MailItem
    Dim olFolder  As Outlook.MAPIFolder
    Dim olItem As Outlook.MailItem
    'GetDefaultFolder(16) = Draft folder, "Drafts/VBA Templates" is my VBA Template folder
    Set olFolder = Application.GetNamespace("MAPI").GetDefaultFolder(16).Folders("VBA Templates")
    For Each olItem In olFolder.Items
        Debug.Print olItem.subject ' Print to immediate window
        If olItem.subject = subject Then
            Set getVbaTemplateMail = olItem.Copy
            'If error "Active Inline Response" appears, the mail is open in Outlook, close it first!
            Exit Function
        End If
    Next
End Function
票数 4
EN

Stack Overflow用户

发布于 2018-02-27 07:40:55

Azure信息保护

答案是,而不是。见下文引文。

考虑到这是一个付费的安全功能,我个人不会认为这是可能的。

临时解决方案:

作为一种临时解决方案,取决于您的需要,您是否考虑过让您的管理员设置一个默认设置分类?

除了手动选择标签外,还可以以下列方式应用标签: 管理员配置了默认标签,您可以保留或更改该标签.

  1. 确保范围策略包括您的帐户。
  2. 如果你有分类和保护,而不仅仅是保护,更多的信息是这里

微软的反馈表明.

可以使用支持标签编程应用程序的新SDK来解决。但是,此SDK尚未公开预览。如果您在Yammer站点:https://www.yammer.com/AskIPTeam上询问它,您可能可以尝试它的私有预览。

那里..。

是此SDK的用户语音条目,当...which成为公开可用的...if时,您可以投票支持它,您也会收到通知:https://msip.uservoice.com/forums/600097-azure-information-protection/suggestions/19602292-update-the-sdk-api-for-aip-to-include-classificati%C2%A0

我看到的SDK文档似乎与C#有关,但这只是我的观察。请参阅开发人员链接。

注:

我快速搜索了他们的反馈站点,关于Azure信息保护(AIP)的想法,寻找开发,使用搜索词VBAprogramming classification,这没有任何结果。

现在有一个用户在这里提出了这个问题:

https://learn.microsoft.com/en-us/information-protection/get-started/infoprotect-tutorial-step4#comme

其他资源:

  1. Azure信息保护开发者指南
  2. 常见问题
  3. Azure信息保护博客
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49003285

复制
相关文章

相似问题

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