Microsoft Word 2013宏保存表单内容

时间:2015-08-17 10:18:48

标签: vba ms-word word-vba

我试图编写一个宏来保存带有特定文件名的Microsoft Word 2013文档。我创建了一个客户填写的单词表单。我想创建一个宏,它自动保存文档,其中包含客户端在表单中填写的字段之一的名称。

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

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

我想将文件另存为:

A1B2-345_17082015_metadata.DOCX

我对编程很新,但我确实有一些经验。我非常感谢能得到的所有帮助。

2 个答案:

答案 0 :(得分:0)

首先为每个控件添加Properties。您可以点击文档中的控件,然后点击Developer功能区上的Properties来执行此操作。 Title窗口中的第一个字段为MyText。提供访问唯一标题所需的每个控件。在下面的示例中,我分别使用MyDateMyDropSelectContentControlsByTitle()作为文本,日期和下拉控件。

然后,您可以使用(1)函数访问VBA中的每个控件。只要您使用唯一标题,此函数将返回仅包含单个控件的集合,以便我们可以从集合中检索第一个项目(索引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

最后,保存它:

{{1}}

答案 1 :(得分:0)

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