我们正在创建发票模板。
在模板(以及文档)中文件名设置为“发票”。我们还添加了构建块内容控制属性称为“发票号码”——由用户输入。
我们如何将“发票号码”附加到标题,以便在保存时将其归档为“发票-nnn”
答案1
除非您使用 SharePoint,否则在 Word 中实际上只有一种相当简单的方法可以执行此操作,对于最终用户来说,这种方法相当简单,并且不依赖于 VBA 等编码,那就是使用传统的表单字段代码输入发票号码,并使用{ TITLE }
字段代码来设置Title
属性。
这就要求你也保护保护文档的全部或部分,因为这是使该类型的表单正常工作所必需的。保护文档的一部分可能会产生其他限制,例如,用户无法处理某些类型的内容。
如果您还想确保标题是磁盘上文档文件名的一部分,那么无论如何都需要编码。
如果您的文档是通过 SharePoint 提供的,则在保存文档时可以使用 SharePoint 列公式设置标题。(实际上,我认为您不能这样做,但我必须检查一下)。
无需代码即可实现此操作的唯一原因是旧版表单具有“退出时计算”选项,这意味着当用户离开设置了该选项的字段时,所有字段结果都会重新计算。不幸的是,当您使用内容控件时,没有等效项,但这就是现状。
此时,您可能应该对使用旧版表单字段制作表单进行一些研究,但为了作为其工作原理的示例,您可以执行以下操作:
在“开发人员”选项卡的“控件”组中,单击指向Legacy Forms
和ActiveX Controls
图标的下拉菜单。单击部分Text Form Field
中的 图标Legacy Forms
。不要使用ActiveX Control
。
这会将 FORMTEXT 字段插入到您的文档中。您可以根据需要使用 Alt-F9(通常)来显示实际的表单字段。
选择字段并使用Properties
选项设置类型、最大长度等。我不会在Default Text
框中放置任何东西。
将名称更改Bookmark
为,例如InvoiceNum
。
确保Fill-in enabled
复选框被选中。选中复选框。如果需要,Calculate on exit
请使用Add Help Text
按钮添加提示,然后单击OK
。
之后,您需要插入一些字段代码,将文档标题设置为“发票-”,后跟表单字段中输入的数字。您用一个字段包围它,{ SET }
以防止显示结果标题。所以...
单击 for 字段后,使用 ctrl-F9(通常)输入一对特殊字段代码括号{ }
。
在其中SET X
输入
{ SET X }
在“X”之后,再次使用 ctrl-F9,这样你就有了
{ SET X { } }
在内部 { } 中TITLE "Invoice-"
输入
{ SET X { TITLE "Invoice-" } }
立即单击-
并使用 ctrl-F9 插入另一对字段括号,这样你就有了
{ SET X { TITLE "Invoice-{ }" } }
在这些括号内,输入您在表单字段的属性框中输入的“书签”名称,例如
{ SET X { TITLE "Invoice-{ InvoiceNum }" } }
注意:您不能直接{ }
使用键盘输入这些内容。您必须使用 ctrl-F9 或等效键创建字段括号对。
现在,在使用表单之前,您必须保护它。为此,请在Protect
组中单击Restrict Editing
,检查并在下拉列表中Allow only this type of editing in the document
选择。Filling in forms
然后单击“是,开始强制保护”。Word 将提示输入密码。目前,我会忽略它。
现在您应该能够在表单字段中输入数字。但您必须单击“退出字段”选项卡,以便更新标题。您应该能够检查标题是正在使用 进行更新File-> Info
。要修改表单等,您首先必须返回Restrict Editing
任务窗格并单击Stop Protection
。
如果您确实需要在文档中使用内容控件,则可以混合内容控件和旧的表单字段,但这可能会导致另一组问题。
要仅使用内容控制来执行此操作,您的主要选择是......
只需使用标题内容控件而不是 FORMFIELD,但使用前缀预填充它,Invoice-
然后用户必须知道他们不应该更改该文本,而应该在其后添加发票号,然后“退出内容控件”。或者您可以添加任何其他映射的内容控件(例如公司传真号码控件),修改其标题,然后插入一组与上面类似的字段,但它们看起来像这样:
{ SET X { TITLE "Invoice-[AnotherCopyOfTheMappedContentControl]" } }
(即你实际上在之后插入该控件的另一个副本Invoice-
)
在这种情况下,用户必须知道他们必须退出内容控制,然后选择文档(例如,使用 control-A,然后按 F9 来更新所有字段代码)。
我个人不想要求我的用户记住任何这些内容,但我希望在某些环境中这是一个可行的选择。