Excel VBA将每个命名的范围粘贴到单词上

我有dynamic命名的单元格的范围。 我需要将每个已命名的范围粘贴到单词的一个页面中,并移动到下一个命名范围的下一页。 我尝试了一些代码,我无法做到。每个命名的范围数据都是相互重叠的。 任何人都可以帮助我,请。

Set wbBook = ActiveWorkbook Set rs = wbBook.Names(1).RefersToRange For i = 2 To wbBook.Names.Count Set rs = Union(rs, wbBook.Names(i).RefersToRange) Next rs.Copy With wd.Range .Collapse Direction:=0 .InsertParagraphAfter .Collapse Direction:=0 .PasteSpecial False, False, True Application.CutCopyMode = False End With 

这听起来像你想复制每个范围到不同的页面,所以我不知道你为什么使用联合。 下面是一个将每个命名区域“名称”复制到Word文档中的新工作表的简单示例。 注意:为了简化,我创build了一个新的文档。

编辑 – 我添加了数据的复制/粘贴function到最后。 格式和这取决于你有什么或想要什么。

 Sub main() 'Create new word document Dim objWord As Object Dim objDoc As Object Set objWord = CreateObject("Word.Application") objWord.Visible = True Set objDoc = objWord.documents.Add() Dim intCounter As Integer Dim rtarget As Word.Range Dim wbBook As Workbook Set wbBook = ActiveWorkbook 'Loop Through names For intCounter = 1 To wbBook.Names.Count Debug.Print wbBook.Names(intCounter) With objDoc Set rtarget = .Range(.Content.End - 1, .Content.End - 1) 'Insert page break if not first page If intCounter > 1 Then rtarget.insertbreak Type:=wdPageBreak 'Write name to new page of word document rtarget.Text = wbBook.Names(intCounter).Name & vbCr 'Copy data from named range Range(wbBook.Names(intCounter)).Copy Set rtarget = .Range(.Content.End - 1, .Content.End - 1) rtarget.Paste End With Next intCounter End Sub 

高强

在这里输入图像说明

生成的Word文档

在这里输入图像说明

我不认为这是最好的解决scheme(因为我通常不玩Word VBA),但我已经尝试过,它似乎工作:

 Sub AddNamedRangesToWordDoc() Dim oWord As Word.Application Dim oDoc As Word.Document Dim intCount As Integer Dim oRng As Range Dim oSelection As Object Set oWord = New Word.Application Set oDoc = oWord.Documents.Add oWord.Visible = True For intCount = 1 To ActiveWorkbook.Names.Count Set oRng = Range(ActiveWorkbook.Names(intCount).RefersToRange.Name.Name) oRng.Copy oDoc.ActiveWindow.Selection.PasteSpecial , , 0 Set oSelection = oWord.Selection oSelection.InsertBreak (wdPageBreak) Next Set oSelection = Nothing Set oRng = Nothing Set oDoc = Nothing Set oWord = Nothing End Sub 

:我正在创build一个新的字应用程序。 您可能需要检查单词是否已经打开以及如何处理现有的单词文档。 另外,我不创build单词对象。 我在项目中引用了Microsoft Word xx.x Object Library ,因为我更喜欢使用内置库。 此外,函数假设您只有1个工作表,并且您的所有范围都在该工作表中