如何在不使用宏的情况下在 MS Word 中查找文档变量

如何在不使用宏的情况下在 MS Word 中查找文档变量

我的文档中包含一些文档变量,我正在尝试在文档中使用这些变量。但由于变量是由外部系统设置的(该系统没有很好的文档记录),所以我只能猜猜看。我假设存在一个带有“最后修订日期”的变量,然后开始猜测该变量可能叫什么。

有没有办法列出 MS Word 文档中的所有文档变量及其值,以便在文档中使用它们时可以查找它们?(我正在使用 MS Office 2010)

答案1

Word 有许多不同类型的“变量”,有些被称为“文档变量”,但还有一些我称之为“属性”的东西——我将尝试在下面列出主要类型。

您可以在 Word 中的几个地方查找某些类型的属性,但对于真正的“变量”和其他类型的属性,如果您不能使用宏或其他代码,则需要解压缩 .docx 文件并查看其中的各种文件。

您可以在 Word 2010 中查看的位置(这里不显示文档变量)...

a. 在“Backstage”中 - 查看“文件”选项卡、“信息”选项,您应该会看到右侧列出的一些属性。单击列表底部的“显示所有属性”,您可能会看到更多内容。

b. 在“插入”选项卡、“文本”组、“快速部件”->“属性”中,您应该会看到“内置属性 + 由 Sharepoint 插入的部分或全部属性(如果您正在使用)”的列表。

c. 在“文档信息面板”(DIP) 中。如果您没有看到它,请进入文件菜单,然后选择选项,然后(例如)快速访问工具栏。选择“所有命令”下的“选择命令”,然后查找“属性”,选择它,然后单击添加按钮。然后您应该在快速访问工具栏中看到一个图标,该图标在圆形蓝色背景上有一个小的白色“i”。单击该图标,您应该会看到一些内置属性(作者、标题等)或一些 SharePoint“内容类型”属性(如果您使用的是 SharePoint)。您可能能够在其中的多个视图之间切换。如果您然后单击 DIP 左上角的下拉菜单并选择“高级属性”,您将看到一个多选项卡对话框,其中显示

  • 一些“内置”属性

  • 旧式的“用户定义”自定义文档属性。

对于其他所有内容,您可能必须查看 .docx 中的 XML。为此,请复制您的文档。假设副本名为 mydoc.docx。将其重命名为 mydoc.docx.zip,打开 zip,然后查找以下内容...

a. true 文档变量存储在 word 文件夹的 settings.xml 中,位于名为 w:docVars 的元素中。您应该看到每个变量的名称和值。您可以使用 { DOCVARIABLE variablename } 字段在文档中插入文档变量的值。

b. 内置文档属性,包括作者、标题等。在大多数情况下,可以使用特殊字段(例如 { AUTHOR })或在某些情况下使用 { DOCPROPERTY } 字段将值插入文档中。虽然有点混乱,但有一个标准的名称列表。您可以在 core.xml 和 app.xml 文件的 docProps 文件夹中找到大多数值。但是,如果使用,一些(“封面页属性”)存储在其中一个“item.xml”文件中(例如 customXml 文件夹中的“item1.xml”)。

c. 旧式“用户定义”自定义文档属性,主要由名称/值对组成,其值可以使用 { DOCPROPERTY } 字段插入文档中,例如 { DOCPROPERTY mycustomproperty }。这些显示在“高级属性...”对话框中,但在 .docx 中,它们位于 docProps 文件夹中的 custom.xml 文件中。

d. 新式自定义属性,也称为“Sharepoint 属性”或“内容类型属性”,因为它们通常是从 Sharepoint 列表中的列创建和填充的。这些值存储在“自定义 XML 部分”中,可以使用已设置为指向相关 XML 位的内容控件插入。(仅限 Word 2007 及更高版本)。在 .docx 中,您将在名为“item1.xml”、“item2.xml”等的文件中,找到这些变量的多个“架构”,以及 customXML 文件夹中变量的值。

例如,最后,任何开发人员都可以将他们自己的自定义 XML 部分放入 Word 文档中,并将内容控件连接到这些自定义 XML 部分中的元素和属性。我不会尝试详细介绍如何完成此操作,但您会在 customXML 下的 item1.xml、item2.xml 等文件中找到数据。但是,要找到内容控件本身、它们的名称以及它们所连接的内容,您通常需要在 Word 文件夹中查找,例如 document.xml,以及一个或多个“header”和“footer”.xml 文件。

答案2

我遇到了类似的问题。一些第三方工具箱崩溃了,我需要设置一个变量值。

这有点粗糙,但这里有一些我编写的 VBA 代码,它将列出ActiveDocument.Variables集合中的所有变量;

Public Sub ListAllVariables()
    Dim V As Variable, S As String
    For Each V In ActiveDocument.Variables
        S = S & V.Name & vbTab & V.Value & vbNewLine
    Next V
    MsgBox S
End Sub

您可以创建一个新的宏并将其转储到其中,这应该会为您提供信息。找到您感兴趣的变量的名称后,您可以使用它进行设置

ActiveDocument.Variables("MyVariable") = "Value"

答案3

接着 Steztric 的说法:如果你有超过 30 个 docVariables,你可以像下面这样分块显示它们:

Public Sub ListAllVariables()
    Dim V As Variable, S As String, Counter As Integer
    Counter = 0
    For Each V In ActiveDocument.Variables
    If Counter < 20 Then
        S = S & V.Name & vbTab & V.Value & vbNewLine
        Counter = Counter + 1
    Else: MsgBox S
    Counter = 0
    S = " "
    End If
    Next V
  MsgBox S
End Sub

相关内容