Written by Allen Wyatt (last updated September 23, 2023)
This tip applies to Word 2007, 2010, 2013, 2016, 2019, 2021, and Word in Microsoft 365
One of the nifty things about programming VBA macros is that the language is object-oriented. This means that you can access every part of your document using objects and collections of objects. In other words, you can manipulate paragraphs without ever needing to select them.
For instance, let's say you wanted to access each paragraph of a document, in turn, and do some processing on the text in that paragraph. Since each paragraph is a distinct object in the document, this is relatively easy. All of the paragraph objects are accessible as part of the Paragraphs collection. The following code will do the trick:
iParCount = ActiveDocument.Paragraphs.Count For J = 1 To iParCount sMyPar = ActiveDocument.Paragraphs(J).Range.Text [Add processing comments to manipulate sMyPar] ActiveDocument.Paragraphs(J).Range.Text = sMyPar Next J
The first line of the code sets iParCount equal to the number of paragraphs in the current document. The loop starting in the second line then does the main work in the macro. The third line set the sMyPar string equal to the text within the specified paragraph. (When J is equal to 1, you are working with the first paragraph. When J is equal to 2, it is the second paragraph—and so on.)
After the processing of sMyPar is complete, then the next line sets the document text equal to the modified text in the sMyPar string.
The above code does, however, take quite a long time to run. It would be quicker to access the Paragraphs collection using a For Each loop, as shown here:
For Each p In ActiveDocument.Paragraphs sMyPar = p.Range.Text [Add processing comments to manipulate sMyPar] p.Range.Text = sMyPar Next p
You can make your code quicker still if you only change the paragraphs if your processing indicates that a change is necessary.
Note:
WordTips is your source for cost-effective Microsoft Word training. (Microsoft Word is the most popular word processing software in the world.) This tip (12177) applies to Microsoft Word 2007, 2010, 2013, 2016, 2019, 2021, and Word in Microsoft 365. You can find a version of this tip for the older menu interface of Word here: Accessing Paragraphs in a Macro.
Learning Made Easy! Quickly teach yourself how to format, publish, and share your content using Word 2021 or Microsoft 365. With Step by Step, you set the pace, building and practicing the skills you need, just when you need them! Check out Microsoft Word Step by Step today!
One of the math functions you can use in your macros is the Int function. It provides a way for you to derive an integer ...
Discover MoreNeed to know if the Num Lock key is on or off? You can use a short bit of macro code to figure out the state of the key.
Discover MoreWhen working with macros, you may want to create a variable that will remain constant from one instance of the macro to ...
Discover MoreFREE SERVICE: Get tips like this every week in WordTips, a free productivity newsletter. Enter your address and click "Subscribe."
There are currently no comments for this tip. (Be the first to leave your comment—just use the simple form above!)
Got a version of Word that uses the ribbon interface (Word 2007 or later)? This site is for you! If you use an earlier version of Word, visit our WordTips site focusing on the menu interface.
Visit the WordTips channel on YouTube
FREE SERVICE: Get tips like this every week in WordTips, a free productivity newsletter. Enter your address and click "Subscribe."
Copyright © 2025 Sharon Parq Associates, Inc.
Comments