PowerPoint VSTO动态设置评论作者:Office 365登录用户覆盖问题
问题分析
在订阅版Office 365的PowerPoint中,出于账户安全与内容合规的限制,Comments.Add方法的作者参数会被强制忽略,评论作者会自动设为当前登录的Office账户,这就是你的代码在2016版正常、365版失效的核心原因。
解决方案
由于无法直接修改365版PowerPoint评论的作者字段,可采用以下合规替代方案:
方案一:将自定义作者名嵌入评论内容开头
在评论文本前添加自定义作者标识,让阅读者能直观看到指定的作者信息。修改后的示例代码如下:string timestamp = System.DateTime.Now.ToString("yyyyMMddHHmmssFFF") + "_" + subcategoryId; // 定义需要显示的自定义作者名 string customAuthor = "你的指定作者名"; // 将作者名嵌入评论内容开头 string commentText = $"[{customAuthor}] {text}"; Microsoft.Office.Interop.PowerPoint.TextRange rng = Globals.ThisAddIn.Application.ActiveWindow.Selection.TextRange; Microsoft.Office.Interop.PowerPoint.Comment comment = Globals.ThisAddIn.Application.ActiveWindow.Selection.SlideRange.Comments.Add(900, 600, timestamp, "", commentText);方案二:使用评论的「备注」字段存储自定义作者名
利用评论的Notes属性存储自定义作者信息,后续可通过代码读取并展示给用户:string timestamp = System.DateTime.Now.ToString("yyyyMMddHHmmssFFF") + "_" + subcategoryId; string customAuthor = "你的指定作者名"; Microsoft.Office.Interop.PowerPoint.TextRange rng = Globals.ThisAddIn.Application.ActiveWindow.Selection.TextRange; Microsoft.Office.Interop.PowerPoint.Comment comment = Globals.ThisAddIn.Application.ActiveWindow.Selection.SlideRange.Comments.Add(900, 600, timestamp, "", text); // 将自定义作者名存入评论的备注字段 comment.Notes = customAuthor;若需要展示自定义作者,可通过读取
comment.Notes的值,配合UI逻辑呈现给用户。
注意事项
订阅版Office 365的这一限制是官方设计,目前没有合法途径绕过该限制直接修改评论的作者字段,上述方案为合规范围内的可行替代实现方式。
内容的提问来源于stack exchange,提问作者DKS
相关产品推荐
相关产品推荐

