vba - 有没有办法更改Word文档中修订的作者?

标签 vba ms-word ms-office revision author

我想知道是否有办法更改文档中的修订作者,我找到了更改评论作者的方法,但没有找到修订部分的方法。我试图在 Revisions.object 文档中找到一个属性/方法来更改它,但我一无所获。

正如我所说,我已经尝试过这样做:

Sub ChangeCommentCreator()
    Dim I As Long
    Dim Novo As String
    Dim Corto As String
    If Selection.Comments.Count = 0 Then
        MsgBox "No comments in your selection!", vbInformation, "Alerta"
        Exit Sub
    End If
    Novo = InputBox("New author name?", "Alerta")
    Corto = InputBox("New author initials?", "Alerta")
    If Novo = "" Or Corto = "" Then
        MsgBox "The author name/initials can’t be empty.", vbInformation, "Alerta"
        Exit Sub
    End If
    With Selection
        For I = 1 To .Comments.Count
            .Comments(I).Author = Novo
            .Comments(I).Initial = Corto
        Next I
    End With
End Sub

我走的路是对的还是没有办法改变?

最佳答案

修订版会自动使用 UI 中选定的用户名。 RevisionsAuthor 属性的语言引用说明:

Returns the name of the user who made the specified tracked change. Read-only String.

所以没有直接的方法使用 VBA 和对象模型来改变它。

可以通过编辑底层的 Word Open XML 来更改它,如以下代码所示。但是,我注意到这似乎混淆了 Word - 在运行宏后,文档中没有识别出任何修订。只有在保存、关闭并重新打开后,Word 才能再次“看到”修订。

Sub ChangeAuthorName()
    Dim sWOOXML As String
    Dim findAuthor As String
    Dim replaceAuthor As String

    findAuthor = "w:author=" & Chr(34) & "Cindy Meister" & Chr(34)
    replaceAuthor = "w:author=" & Chr(34) & "unknown" & Chr(34)
    sWOOXML = ActiveDocument.content.WordOpenXML
    sWOOXML = Replace(sWOOXML, findAuthor, replaceAuthor)
    ActiveDocument.content.InsertXML sWOOXML
End Sub

请注意,这也可能会更改作者的评论姓名。更“优雅”的方法是利用 XML 解析器(例如 MSXML)并使用特定节点。或者甚至使用可处理已关闭 文档并编辑 Word Open XML 的包。但这是使用直接 Word VBA 的最简单方法。

关于vba - 有没有办法更改Word文档中修订的作者?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57867579/

相关文章:

excel - 在使用 VBA 从 Access 自动打开和搜索之前检查打开的 Excel 文件

.net - 如何以编程方式判断word文档是否已损坏?

Office 2013 中的 XML 声明

javascript - 如何使用 IE 中的 javascript 检测已安装的 MS Office 版本?

vba - 如何在移动电子邮件时将 Outlook 电子邮件唯一标识为 MailItem.EntryID 更改

VBA等效于SQL 'in'函数

excel - 如何在 Excel/VBA 中从十六进制代码创建文件

c# - 如何从 C# 获取 Word 文档的文件名?

excel - 使用powershell查找word和excel文档的最后保存者

java - 使用某些版本的 Office 10 打开 docx4j 文件保存时出错