Vb.net 在MS Word文档中填写变量并在VB中打印

Vb.net 在MS Word文档中填写变量并在VB中打印,vb.net,variables,printing,ms-word,Vb.net,Variables,Printing,Ms Word,我有一个Microsoft Word文档,里面有变量。 这些是占位符(例如名称、名字、日期) 我的VB程序应该在文档中填充这些变量(例如将日期放入日期变量、将名称放入名称变量等等),然后打印页面 有办法吗?如果是,我必须查找哪些关键字才能找到正确的命令 谢谢你的帮助 一个可能的选择是在Word文档中使用书签。 然后解析文档并进行如下值替换: doc.Bookmarks.Item(bookmark_name).Range.Text = newValue Dim doc As Word.Docum

我有一个Microsoft Word文档,里面有变量。 这些是占位符(例如名称、名字、日期)

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

有办法吗?如果是,我必须查找哪些关键字才能找到正确的命令


谢谢你的帮助

一个可能的选择是在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)
或者,您可以在以下范围内搜索和替换:

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)

一个可能的选择是在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)
或者,您可以在以下范围内搜索和替换:

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)

除了Mort提到的可能性之外,Word还提供

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

ActiveDocument.Variables("name").Value = "text"
基本字段代码:{DocVariable“name”}

(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部件中的节点。内容控件可以通过其在文档中的位置、标题属性或标记属性来寻址。多个内容控件可以具有相同的标题和/或标记属性。因此,基于标题或标记拾取内容控件的方法将返回一个数组。用于寻址内容控件的代码:

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

使用这五种可能性中的哪一种取决于项目中涉及的所有情况,包括用户是否应设置文档以与代码一起运行,是否需要在以后从文档中提取数据等。

除了Mort提到的可能性之外,Word还提供

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

ActiveDocument.Variables("name").Value = "text"
基本字段代码:{DocVariable“name”}

(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部件中的节点。内容控件可以通过其在文档中的位置、标题属性或标记属性来寻址。多个内容控件可以具有相同的标题和/或标记属性。因此,基于标题或标记拾取内容控件的方法将返回一个数组。用于寻址内容控件的代码:

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

使用这五种可能性中的哪一种取决于项目中涉及的所有情况,包括用户是否应设置文档以与代码一起运行,是否需要在以后从文档中提取数据,等等。

看起来很有希望。我会尝试一下,然后回应!我有一个新的任务,我必须做之前,我可以到这一个。我很可能会选择Cindy Meisters的方法(1)。无论如何,谢谢你的帮助!看起来很有希望。我会尝试一下,然后回应!我有一个新的任务,我必须做之前,我可以到这一个。我很可能会选择Cindy Meisters的方法(1)。无论如何,谢谢你的帮助!我还不能测试它,但我很确定(1)正是我一直在寻找的!谢谢我还有一个问题~我终于完成了我需要的任务,但我找不到(1)的正确导入。你能帮我吗?:-)进口?在VB.NET“页面”顶部的导入语句中?Imports Word=Microsoft.Office.Interop.Word已经发现了,但是谢谢:-)应该提到我没有做一个宏你的帖子很清楚,我只是有我的VBA思维上限:-)我还不能测试它,但我很确定(1)正是我一直在寻找的!谢谢我还有一个问题~我终于完成了任务,我需要这个来回答b