如何使用字段代码在 Word 中插入系统用户名格式的用户名

如何使用字段代码在 Word 中插入系统用户名格式的用户名

我想通过字段代码插入当前用户名。有一个字段代码 UserName。此字段代码的返回值类似于Application.UserNameVBA 中的“Super User”。我想要返回值类似于Environ("username")VBA 中的“super.user”。

我如何通过字段代码实现这一点,或者只能通过 VBA 实现?

答案1

帖子 如何根据(登录ID)插入当前用户的姓名 解释说,登录名存储在名为的 Windows 环境变量中USERNAME,只能通过调用 VBA 函数的宏来检索Environ

可以这样将登录名设置到名为 的 Word 变量中 username

编写一个名为的宏AutoNew和另一个名为的宏,AutoOpen如下所示:

Sub AutoNew()
    GetUserName
End Sub

Sub AutoOpen()
    GetUserName
End Sub

Sub GetUserName()
    ActiveDocument.Variables("username").Value = Environ("USERNAME")
    ActiveDocument.Fields.Update
End Sub

(看http://www.gmayor.com/installing_macro.htm如果您需要说明。)AutoNew当您从 Normal 模板或任何其他模板创建新文档时,宏将运行;AutoOpen当您打开现有文档时,宏将运行。它们都调用 GetUserName例程,该例程从环境变量中获取用户名并将其放入当前文档中的变量(名为“用户名”)。

然后,在文档中或文档所基于的模板中插入字段

{DocVariable username}

在您希望显示登录名的位置。您必须使用快捷键 Ctrl+F9 插入括号以使其成为字段,或者使用插入 > 快速部件 > 字段对话框插入DocVariable 字段。按 F9 更新字段。该字段将显示最近放入用户名文档变量的值。

有关使用该变量的更多详细信息:

在快速部分 - 插入字段 - 选择docvariable并输入 username,然后单击确定。

按 Alt+F9 显示用户登录名。

参见图:

在此处输入图片描述

答案2

我认为 harrymc 的原始答案符合您的要求。我投了赞成票,并将其添加到我的有用宏集合中。这是我对宏的修改,您可能会觉得这是一个改进。

  1. 如果没有 DocVariable 字段,则不会生成错误消息,并且
  2. 它仅更新 DocVariable 字段,这对您来说可能重要也可能不重要。

请注意,我怀疑它可能需要更长时间才能运行。

我会在这里将其作为评论发表,但它对宏观结构实际上不起作用。

Sub GetUserName()
    ' https://superuser.com/questions/1818656/how-to-insert-username-in-system-username-format-in-word-using-field-code
    ' 2023-11-30
    ' by harrymc modified by Charles Kenyon
    ' Gets UserName from system, creates variable, and updates Document Variable field
    On Error Resume Next
    Dim oField As Field
    ActiveDocument.Variables("username").Value = Environ("USERNAME")
    For Each oField In ActiveDocument.Fields
        If oField.Type = wdFieldDocVariable Then oField.Update
    Next oField
    On Error GoTo -1
    Set oField = Nothing
End Sub

相关内容