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


10

我的文档中包含一些文档变量,而我正在尝试在文档中使用这些变量。但是由于变量是由外部系统设置的(没有充分的文档证明),所以我在玩猜谜游戏。我假设存在一个带有“上次修订日期”的变量,然后开始猜测该变量可能被调用了什么。

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

Answers:


13

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

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

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

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

b。在“插入”选项卡的“文本”组的“快速零件”->“属性”中,应该使用“内置属性+共享点插入的某些或所有属性(如果使用的是这些属性)”的列表。

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

  • 一些“内置”属性

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

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

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

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

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

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

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


好答案。谢谢!一个注意事项:“ b。在“插入”选项卡的“文本”组,“快速零件”->“属性”中,您应该看到“内置属性+如果要使用的话,则由Sharepoint插入的某些或所有属性。”的列表。 Quick Parts似乎没有“属性”
某些用户

我的错误-应该是“快速零件”->“文档属性”

属性和DocVariables在如何在字字段和VBA中使用它们的方式看起来非常相似。有什么取舍吗?
BenPen

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

您可以创建一个新的宏并将其转储到该宏中,这将为您提供信息。找到所需变量的名称后,可以使用

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

2
太酷了,谢谢。微软没有提供给您一个集合的选择器窗口,而您却获得了一个两栏弹出窗口,让您从集合中选择一个或多个项目(或向其中添加新值),这是非常糟糕的实际集合),然后允许您的VBA代码访问调用子/功能中的选定项目。
BenPen
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.