2015-12-21 67 views
0

我有一个带有变量的Microsoft-Word文档。 这些是占位符(例如名称,名字,日期)。在MS-Word Document中填充变量并在VB中打印

我的VB程序应该将这些变量填充到文档中(例如将日期放入日期变量,名称放入名称变量等等),然后打印页面。

有没有办法做到这一点?如果是的话,我必须查找哪些关键字才能找到正确的命令?

感谢您的帮助!

回答

2

除了莫特提到的可能性,Word还提供

(1)文件变量。这些是Word文档内的字符串存储,不可见或不可由用户编辑,因此对于应该保留在文档中的信息很有用。通过插入引用变量名称的DocVariable字段,文档变量的内容可以显示在文档表面上。在对象模型:

ActiveDocument.Variables("name").Value = "text" 

基本字段代码:{DOCVARIABLE “姓名”}

(2)自定义文档属性。这些与文档变量类似,但可以由用户在“文档属性”对话框中查看和编辑。内容可以使用DocProperty字段显示在文档表面上。他们的对象模型中的使用是有点络合剂比文档变量,因为它们必须明确创建:

Dim prop As Office.DocumentProperty 
Set prop = ActiveDocument.CustomDocumentProperties.Add(_ 
    Name:="test", LinkToContent:=False, _ 
    Type:=Office.MsoDocProperties.msoPropertyTypeString, _ 
    value:="prop value") 
Debug.Print prop.value 

其他方面的差异:文档变量必须有一个值,它不能是空字符串;自定义文档属性可以是一个空字符串。您不能“添加”已存在的文档属性。可以存储在文档中的字符数限制为255.

(3)内容控件。你可以将它们看作文档表面上的“文本框”。它们也可以用于表格保护。如果您愿意,可以将它们链接到存储在文档中的自定义XML部件中的节点。内容控制可以通过其在文档中的位置或其Title属性或其Tag属性来解决。多个内容控件可以具有相同的标题和/或标记属性。基于这个原因,根据标题或标记拾取内容控件的方法返回一个数组。该代码以解决内容控制:

Dim cc as Word.ContentControl, ccs as Word.ContentControls 
Set ccs = ActiveDocument.SelectContentControlsByTitles("name") 
Set cc = ccs(1) 

哪五种可能性使用取决于所有参与该项目的情况,包括用户是否应建立文件与您的代码运行,数据是否需要稍后从文档中提取等。

+0

我还没有测试它,但我很确定(1)正是我一直在寻找的!谢谢! – Luke

+0

我还有一个问题〜我终于在我需要这个任务,但我无法找到正确的导入(1)。你能帮我解决吗? :-) – Luke

+0

导入?就像在VB.NET“页面”顶部的Imports语句中一样?导入Word = Microsoft.Office.Interop.Word –

1

一个可能的选择是在Word文档中使用书签。 然后你通过文档解析,并做值替换这样的:

doc.Bookmarks.Item(bookmark_name).Range.Text = newValue 

另外,您可以搜索和范围替换这样的:

Dim doc As Word.Document = Program.LetterInstance.LetterForm.Document 
Dim range As Word.Range 
range = doc.Content 
range.Find.Execute(FindText:=OldText, ReplaceWith:=NewText, Replace:=Word.WdReplace.wdReplaceAll) 
+0

看起来很有希望。在此之后我会尝试并做出回应! – Luke

+0

我得到一个新的任务,我必须做,然后才能来到这个。我可能会赶上辛迪美斯方法(1)。无论如何,感谢您的帮助! – Luke