2015-12-21 68 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