VBA Selection.PasteAndFormat添加换行符

我有一个VBA脚本,在Excel中find一个命名的单元格,并根据Word中的标识符将其粘贴到Word中。 我使用RegEx来查找标识符。

我遇到的问题是,每当它粘贴的值(正确)“按Enter”,以便它进入下一行。 它不应该。

这是脚本:

 Dim objWord, objWordDoc, RegEx, objExcel, objWorkbook, content, texts, text, Text_Name Set RegEx = CreateObject("VBScript.RegExp") Set objWord = CreateObject("Word.Application") Set objExcel = CreateObject("Excel.Application") Set objWordDoc = objWord.Documents.Open("D:\Performance Review Template Rev1.docx", False, True) Set objWorkbook = objExcel.Workbooks.Open("D:\Template Rev1.xlsm", False, True) 'The entire content of the Word Document Set content = objWord.ActiveDocument.Content 'The Regular Expression in terms of finding the short code within the document 'Explanation '----------- '\[# == Escaped [# characters to indicate that the start of the search needs to be an [# '(.*?) == The forward seach in a non greedy way that is also the return group '\] == Escaped ] character that signals the end of the search term RegEx.Pattern = "\[#(.*?)\]" RegEx.Global = True Set texts = RegEx.Execute(content) Dim Found For Each text In texts Set content = objWord.ActiveDocument.Content 'Find the TextName that is in the short code. The Submatches property returns 'the value of the inner return group, whereas the .Value property only returns 'the value of the short code with the [!xxx] added Text_Name = text.submatches(0) Dim xName, xText Found = False 'Search for the text through all the Named Cells in the Excel file objExcel.Range(Text_Name).Copy With content.Find .MatchWholeWord = True .Text = text.Value .Execute If .Found = True Then Found = True content.PasteAndFormat 20 End If End With If Found = False Then MsgBox "Did not find Named Cell!" End If With content.Find .Text = text.Value .Execute If .Found = True Then objWord.Selection.Range.Delete End If End With Next MsgBox "Completed named cells" objWord.ActiveDocument.Close objWord.Application.Quit objExcel.ActiveWorkbook.Close objExcel.Application.Quit 

像往常一样,任何帮助总是赞赏。

这似乎是复制function的标准行为(手动执行相同的结果)。 build议的解决scheme可能是直接复制内容,而不是使用复制和粘贴。

格式也从目标文件保存。 这里是testing代码(用%%%%标记的更改):

 Dim objWord, objWordDoc, RegEx, objExcel, objWorkbook, content, texts, text, Text_Name, copiedText ' %%%% Added variable Set RegEx = CreateObject("VBScript.RegExp") Set objWord = CreateObject("Word.Application") Set objExcel = CreateObject("Excel.Application") Set objWordDoc = objWord.Documents.Open("D:\Performance Review Template Rev1.docx", False, True) Set objWorkbook = objExcel.Workbooks.Open("D:\Template Rev1.xlsm", False, True) 'The entire content of the Word Document Set content = objWord.ActiveDocument.content 'The Regular Expression in terms of finding the short code within the document 'Explanation '----------- '\[# == Escaped [# characters to indicate that the start of the search needs to be an [# '(.*?) == The forward seach in a non greedy way that is also the return group '\] == Escaped ] character that signals the end of the search term RegEx.Pattern = "\[#(.*?)\]" RegEx.Global = True Set texts = RegEx.Execute(content) Dim Found For Each text In texts Set content = objWord.ActiveDocument.content 'Find the TextName that is in the short code. The Submatches property returns 'the value of the inner return group, whereas the .Value property only returns 'the value of the short code with the [!xxx] added Text_Name = text.submatches(0) Dim xName, xText Found = False 'Search for the text through all the Named Cells in the Excel file copiedText = objExcel.Range(Text_Name).text ' %%%% ' %%%% Instead of objExcel.Range(Text_Name).Copy With content.Find .MatchWholeWord = True .text = text.Value .Execute If .Found = True Then Found = True .Parent.text = copiedText ' %%%% ' %%%% Instead of content.PasteAndFormat 20 End If End With If Found = False Then MsgBox "Did not find Named Cell!" End If With content.Find .text = text.Value .Execute If .Found = True Then objWord.Selection.Range.Delete End If End With Next MsgBox "Completed named cells" objWord.ActiveDocument.Close objWord.Application.Quit objExcel.ActiveWorkbook.Close objExcel.Application.Quit