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

som*_*ser 10 microsoft-office macros microsoft-office-2010 microsoft-word

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

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

小智 13

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

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

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

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

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

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

  • 一些“内置”属性

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

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

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

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

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

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

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


Ste*_*ric 5

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

这有点粗糙,但这里有一些我敲出的 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
Run Code Online (Sandbox Code Playgroud)

您可以创建一个新的宏并将其转储到那里,这将为您提供信息。当你找到你感兴趣的变量的名字后,你可以用

ActiveDocument.Variables("MyVariable") = "Value"
Run Code Online (Sandbox Code Playgroud)

  • 这很酷,谢谢。太糟糕了,微软没有提供一个预先打包的选择器窗口,你给它一个集合,你会得到一个两列弹出窗口,让你从集合中选择一个或多个项目(或添加一个新值到实际集合),然后允许您的 VBA 代码访问调用子/函数中的选定项目。 (3认同)