2017-03-24 204 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次,我不必一次又一次地運行所有段落。 –