2017-07-25 96 views
0

我正在使用帶預定義字段(書籤)的Word文檔模板!該書籤有問題地更新的實際值在運行時,它工作正常,但文檔中的一些單詞不標記爲書籤,所以我使用查找&替換功能Microsoft.Office.Interop.Word用實際值替換該單詞,但是當它將包含換行符的文本替換爲文本中沒有出現換行符的文本全文以單行形式出現。 在下面的代碼我已經取代在文件文本「地址」與下面的文字查找和替換使用Microsoft.Office.Interop.Word不支持換行符vb.net

Park Royal House No: 3301 Wing - D 
City: xxxx 
State: YY 
Zip: 100215 

,但它有文件這樣

Park Royal House No: 3301 Wing - D City: xxxx State: YY Zip: 100215 

它後面的示例代碼,以取代在Word文檔中的文本

Private Sub ReplaceWorkDocText() 
    Dim objApplication As Microsoft.Office.Interop.Word.ApplicationClass = Nothing 
    Dim objDocument As Microsoft.Office.Interop.Word.Document = Nothing 
    Dim findText As String = "Address" 
    Dim replaceText As String = "Park Royal House No: 3301 Wing - D" + _ 
           vbCrLf + "City: xxxx" + _ 
           vbCrLf + "State: YY" + _ 
           vbCrLf + "Zip: 100215" 

    objApplication = New Microsoft.Office.Interop.Word.ApplicationClass() 
    objDocument = objApplication.Documents.Open("C:\TEST\FORM0001.docx") 
    With objDocument.Range.Find 
     .Text = findText 
     .Replacement.Text = replaceText 
     .Forward = True 
     .Execute(Replace:=Microsoft.Office.Interop.Word.WdReplace.wdReplaceOne) 
    End With 
End Sub 

請幫我一下,如何用換行符替換文檔中的單詞。

+0

我試過你的代碼,當我測試它時,我的word文檔出現了換行符。雖然我必須在互操作參考中將「Embed Interop Types」設置爲「False」。不知道爲什麼它不適合你 –

+0

@ Cal-cium謝謝,在我的情況下,「地址」是在詞表下。我得到了另一個似乎工作正常的解決方案。同樣要張貼 –

+0

我只是試着用桌子,我明白你的意思。但是,當你複製並粘貼文本以外的文本時,它有換行符,有多奇怪。它必須與表格格式相關。 –

回答

1

我用這個工作來做同樣的事情,它的工作正常。

Private Sub ReplaceWorkDocText() 
    Dim objApplication As Microsoft.Office.Interop.Word.ApplicationClass = Nothing 
    Dim range As Microsoft.Office.Interop.Word.Range 
    Dim objDocument As Microsoft.Office.Interop.Word.Document = Nothing 
    Dim findText As String = "Address" 
    Dim replaceText As String = "Park Royal House No: 3301 Wing - D" + _ 
           vbCrLf + "City: xxxx" + _ 
           vbCrLf + "State: YY" + _ 
           vbCrLf + "Zip: 100215" 

    objApplication = New Microsoft.Office.Interop.Word.ApplicationClass() 
    objDocument = objApplication.Documents.Open("C:\TEST\FORM0001.docx") 

    range= objDocument.Range 
    With range.Find 
     .Text = findText 
     .Forward = True 
    End With 

    While range.Find.Execute(findText, MatchWholeWord:=True) 
     range.Text = replaceText 
     Exit While 
    End While 
End Sub 
+0

因爲這是你的問題的答案,所以標記爲答案,所以每個人都知道你有一個解決你的問題的答案 –