当我在VB.Net中为用户创建Excel文件时,尝试保存文件时出现错误(“在文件只读时无法执行此操作”),似乎是因为没有选择敏感度标签。我找不到任何关于在执行Excel自动化时处理敏感度标签的文档,所以想知道是否有人遇到过这个问题或知道相关文档?是否可以通过编程方式设置敏感度标签?
当我在VB.Net中为用户创建Excel文件时,尝试保存文件时出现错误(“在文件只读时无法执行此操作”),似乎是因为没有选择敏感度标签。我找不到任何关于在执行Excel自动化时处理敏感度标签的文档,所以想知道是否有人遇到过这个问题或知道相关文档?是否可以通过编程方式设置敏感度标签?
语法是Python,因为我正在使用它,但由于win32com.client
只是一个COM包装器,所以这应该可以(使用适当的VB语法)适用于您。
您将需要以下数据,您可以从先前手动设置灵敏度标签为所需值的文件中提取:
existing_sl = existing_doc.SensitivityLabel.GetLabel()
label_id = existing_sl.LabelId
label_name = existing_sl.LabelName
label_id
将是一个 UUID,而 label_name
则是一个字符串。
然后,使用这些数据,您可以创建并设置一个新的敏感度标签,如下所示。
label_id = <the label ID you retrieved from the existing file>
label_name = <the label name your retrieved from the existing file>
new_sl = another_doc.SensitivityLabel.CreateLabelInfo()
new_sl.ActionId = str(uuid.uuid1())
new_sl.AssignmentMethod = 1
new_sl.ContentBits = 0
new_sl.IsEnabled = True
new_sl.Justification = ''
ew_sl.LabelId = label_id
new_sl.LabelName = label_name
new_sl.SetDate = '2022-08-15T07:02:00Z'
new_sl.SiteId = str(uuid.uuid1())
another_doc.SensitivityLabel.SetLabel(new_sl, new_sl)
uuid.uuid1()
函数是Python中用于创建随机UUID的函数。你也可以使用其他方法或固定值。我没有进行深入的测试,但至少它可以使用随机UUID。据我所知,SiteId
变量不需要与原始标签中的变量相同。对于SetDate
,我只是懒得设置一个值。完全正确的做法是使用now
函数或等效函数生成(格式正确的)日期时间字符串。
AssignmentMethod
使用MsoAssignmentMethod枚举。其中1
表示“手动选择了标签”。
Python代码需要引入以下内容:
import win32com.client
import uuid
如果你成功地在VB中实现了它,欢迎发布结果 :)