2017-03-24 166 views
1

我想创建一个宏来重复相同的段落12次,然后移动到下一个宏,重复上述功能直到文档结束。宏复制粘贴12次

我想,现在我想创建下面的宏,直到文件结束一个循环,所以任何帮助表示高度赞赏:

Sub SelectRange() 
Selection.Paragraphs(1).Range.Copy 
Selection.Paste 
Selection.Paste 
Selection.Paste 
Selection.Paste 
Selection.Paste 
Selection.Paste 
Selection.Paste 
Selection.Paste 
Selection.Paste 
Selection.Paste 
Selection.Paste 
Selection.Next(Unit:=wdParagraph, Count:=1).Select 

End Sub 
+0

查看[段落](https://msdn.microsoft.com/en-us/library/office/ff837506.aspx)的MSDN文档...专门paragraphs.range.text和paragraphs.add –

+0

嗯......你是什么意思“直到文档结束”?你意识到每次粘贴选择文档都会有更长的段落,对吧? – Comintern

+0

@Comintern..Yes我明白这样做的目的...原因是不是复制粘贴一个段落在文件中的12次我想创建一个宏,其中复制每个段12次移动到下一个然后复制它12次再次,然后继续,直到所有段落被复制12次...任何帮助非常感谢:) –

回答

1

对于这个特定的问题,我会用@Corith_Malin回答,但机智小调整。您必须为文档上的所有当前段落创建一个容器(在这种情况下,我将使用通过后期绑定创建的ArrayList)。之后,你有你的容器,你可以通过他们循环,并与像这样的先前提供的循环粘贴上的所有段落:

Sub SelectRange() 

'Declaration and assignation of the ArrayList 
Dim arrList as Object 
Set arrList = CreateObject("System.Collections.ArrayList") 

'Loop through each paragraph and store it on the ArrayList 
For Each par In ActiveDocument.Paragraphs 
    arrList.Add (par) 
Next 

'Loop through each stored paragraph 
For Each Item in arrList 
    Item.Range.Copy 

    'Loop 12 times and perform a paste operation 
    For i = 1 To 12 
     Selection.Paste 
    Next 

Next 

End Sub 

请测试,并让我知道你的意见。它适用于我的电脑(程序员笑话;))

+0

这正是我一直在寻找:)。非常感谢你让我的生活更轻松。 –

+0

非常好。请接受答案作为解决方案 – 3vts

+0

我刚才做了:) ..很感谢 –

0

如果你只是好奇如何使用循环,而不是Selection.Paste 12倍......

Sub SelectRange() 
Selection.Paragraphs(1).Range.Copy 

' Loop 12 times and perform a paste operation 
For i = 1 To 12 
    Selection.Paste 
Next i 

' You may need to set Count:=12 here to skip over the pasted content. 
Selection.Next(Unit:=wdParagraph, Count:=1).Select 

End Sub 
+0

..谢谢你的建议,但我所要求的是创建一个循环的方式,上面的代码运行一遍又一遍,直到所有段落被复制12次,我不必一次又一次地运行所有段落。 –