我试图编写一个宏来保存带有特定文件名的Microsoft Word 2013文档。我创建了一个客户填写的单词表单。我想创建一个宏,它自动保存文档,其中包含客户端在表单中填写的字段之一的名称。
实施例: 以下是可填写的内容字段。
client reference: A1B2-345
date: August 17, 2015
type: metadata
我想将文件另存为:
A1B2-345_17082015_metadata.DOCX
我对编程很新,但我确实有一些经验。我非常感谢能得到的所有帮助。
答案 0 :(得分:0)
首先为每个控件添加Properties
。您可以点击文档中的控件,然后点击Developer
功能区上的Properties
来执行此操作。 Title
窗口中的第一个字段为MyText
。提供访问唯一标题所需的每个控件。在下面的示例中,我分别使用MyDate
,MyDrop
和SelectContentControlsByTitle()
作为文本,日期和下拉控件。
然后,您可以使用(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
否则代码将从内容控件中提取占位符文本。