保存具有表单内容名称的文件

问题描述 投票:0回答:2

我正在尝试使用特定文件名保存Microsoft Word 2013文档。

我创建了一个客户填写的Word表单。

我正在使用以下内容:DEVELOPER->控件->纯文本内容控件DEVELOPER->控件->日期选择器内容控件DEVELOPER->控件->下拉列表内容控件

我想要一个宏,以表单中字段之一的名称保存文档。

示例:以下是可填写的内容字段。

client reference: A1B2-345
date: August 17, 2015
type: metadata

我想将文件另存为:

A1B2-345_17082015_metadata.DOCX
vba ms-word word-vba
2个回答
0
投票

首先给每个控件一个Title。您可以通过单击文档中的控件,然后在Properties功能区上单击Developer来执行此操作。 Properties窗口的第一个字段是Title。给您访问唯一标题所需的每个控件。在下面的示例中,我分别将MyTextMyDateMyDrop用作文本,日期和下拉控件。

然后您可以使用SelectContentControlsByTitle()功能访问VBA中的每个控件。只要您使用的是唯一标题,此函数将返回仅包含单个控件的集合,因此我们可以从该集合中检索第一项(索引(1))。这是这样的样子:

Dim strText As String, strDate As String, strDrop As String

strText = ThisDocument.SelectContentControlsByTitle("MyText")(1).Range.Text
strDate = ThisDocument.SelectContentControlsByTitle("MyDate")(1).Range.Text
strDrop = ThisDocument.SelectContentControlsByTitle("MyDrop")(1).Range.Text

Range.Text结尾是从控件中获取当前文本/值的地方。

现在您有了三条信息,您可以使用连接运算符(&)将它们连接为一个字符串:

Dim strFilename As String
strFilename = strText & "_" & Format(strDate, "ddmmyyyy") & "_" & strDrop & ".docx"

最后,将其保存:

ThisDocument.SaveAs strFilename

0
投票

请注意,如果您基于模板(.dotm)生成表单,则上面提供的代码将无法正常工作。包含ThisDocument.SelectContentControlsByTitle的以下行需要更改为ActiveDocument.SelectContentControlsByTitle否则代码将从内容控件中提取占位符文本。

© www.soinside.com 2019 - 2024. All rights reserved.