如何通过VBA为Word文档设置Azure敏感度标签及获取标签ID
解决方法
步骤1:获取你的Azure敏感度标签ID
你可以直接通过本地Word快速获取目标标签的ID:
- 手动新建一个Word文档,手动添加上你要设置的Azure敏感度标签
- 按
Alt + F11打开VBA编辑器,按Ctrl + G调出立即窗口 - 输入以下代码后按回车,即可在立即窗口看到所有标签相关属性,其中
MSIP_Label_和下一个_之间的字符串就是你的标签ID
For Each prop In ActiveDocument.CustomDocumentProperties: If Left(prop.Name, 10) = "MSIP_Label" Then Debug.Print prop.Name & ": " & prop.Value: Next
步骤2:VBA添加标签的语法规则
Azure敏感度标签需要配套设置4个自定义文档属性,不能只添加单个Enabled属性,属性规则如下:
- 属性名统一格式:
MSIP_Label_<替换为你的标签ID>_<属性后缀> - 必选属性后缀及对应值:
Enabled:值为True,属性类型为4(即msoPropertyTypeBoolean)SetDate:值为当前时间的ISO格式字符串,示例:Format(Now(), "yyyy-mm-ddThh:mm:ssZ")Method:固定值为StandardName:值为你的敏感度标签的实际显示名称
步骤3:修改后的完整代码
Function ExportWordDocument() Dim objword, wshshell, objdoc, objselection, objshape, i Dim labelID, labelName, prop ' 请替换为你第一步获取到的标签ID和标签显示名称 labelID = "替换为你的实际标签ID" labelName = "替换为你的实际标签显示名称" Set objword = CreateObject("word.application") objword.Visible = True objword.DisplayAlerts = False Set objdoc = objword.Documents.Add() Set objselection = objword.Selection Set objshape = objdoc.Shapes ' 先删除已存在的同名标签属性,避免添加报错 On Error Resume Next For Each prop In objdoc.CustomDocumentProperties If InStr(prop.Name, "MSIP_Label_" & labelID) > 0 Then prop.Delete End If Next On Error GoTo 0 ' 批量添加4个必填的标签属性 objdoc.CustomDocumentProperties.Add "MSIP_Label_" & labelID & "_Enabled", True, 4, True objdoc.CustomDocumentProperties.Add "MSIP_Label_" & labelID & "_SetDate", True, 3, Format(Now(), "yyyy-mm-ddThh:mm:ssZ") objdoc.CustomDocumentProperties.Add "MSIP_Label_" & labelID & "_Method", True, 3, "Standard" objdoc.CustomDocumentProperties.Add "MSIP_Label_" & labelID & "_Name", True, 3, labelName Dim objscreenshotsfolder, objscreenshot objscreenshotsfolder = Environment.Value("respath") For i = Environment.Value("snapshotNoNext") To Environment.Value("snapshotno") Step 1 objscreenshot = "Screenshot_" & i & ".bmp" objselection.TypeText objscreenshot objselection.InlineShapes.AddPicture (objscreenshotsfolder & "\" & objscreenshot) objselection.TypeParagraph Next objdoc.SaveAs2 Environment.Value("respath") & "\" & Environment.Value("testCaseId") & "_screenshots.doc" objdoc.Close False objword.Quit Set objword = Nothing End Function
注意事项
- 代码中
labelID和labelName必须替换为你自己租户的实际标签值,否则标签不会生效 - 如果你的企业标签配置了额外的属性要求,可以通过步骤1的方法查看手动添加标签的文档所有属性,对照补充到代码中即可
内容的提问来源于stack exchange,提问作者suvin
相关产品推荐
相关产品推荐

