vbams-word

Word Words count displayed with Heading1


Ms Word: Words count displayed with Heading1 Hi, I am looking for help ! For security request, I have to show number of words contained in a paragraph stating with an Heading1, in large docuemnts For large documents, containing huge number of Heading1, I am looking a way, macro, for diplayning number of words below this heading, as per example below Below is the desired result of the macro under consideration. The number of words in the paragraph following each heading1 is displayed at the end of heading1 text.Example blow show paragraphs with Heaind1 tital Thanks for your help

omnis voluptas (255 words)

Ut vehicula, sapien vitae pharetra elementum, odio tortor sagittis magna, a efficitur ante nunc in nisl. Mauris sit amet metus sem. Sed porta accumsan tortor. Quisque vitae lobortis turpis. Donec euismod erat at tincidunt interdum. Fusce neque elit, sodales nec nisl vitae, rhoncus facilisis odio. Donec condimentum ullamcorper turpis, eget sollicitudin odio vestibulum ut. Nullam lectus velit, elementum ultricies lorem vel, mollis placerat sapien. Donec fringilla sem vel leo ullamcorper consectetur. Nunc fermentum sapien ac semper malesuada. In tortor lacus, pulvinar et viverra eu, accumsan non orci. Nullam tristique consectetur augue nec scelerisque. Sed mattis neque id risus pretium, sed porta magna elementum. Proin placerat felis risus, id semper turpis elementum non. Sed posuere elit at eros finibus, ullamcorper volutpat purus pellentesque. Donec a nunc scelerisque, efficitur ipsum sed, tempus justo. Aliquam non commodo mi. Nullam euismod eu tortor in facilisis. Proin vitae leo nec sem egestas gravida et at mi. Fusce vulputate, mi ut maximus dapibus, eros velit suscipit dui, ut viverra lacus tellus id augue. Aenean turpis enim, tempor vitae lacus ac, aliquam tincidunt est. Proin tempor ex ac sapien condimentum venenatis. Nullam at felis non ex ullamcorper vestibulum non ac tellus. Nulla aliquam elementum condimentum. Donec sit amet justo non est imperdiet pharetra. Suspendisse sollicitudin risus nec nisi placerat imperdiet. Donec suscipit massa eget placerat blandit. Nunc aliquet condimentum nulla, condimentum faucibus odio accumsan a. Maecenas vitae mollis ante, sed ornare orci.

Aenean non (131 words)

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin vehicula iaculis ante, a faucibus elit faucibus sit amet. Curabitur cursus libero magna. Aenean porttitor augue non diam mattis efficitur. In pellentesque eros odio, sit amet fermentum ante interdum sed. Mauris mollis imperdiet lacus, eu semper mauris molestie vitae. Sed pellentesque eleifend bibendum. Pellentesque elementum arcu sed feugiat scelerisque. Phasellus ac est ultricies, faucibus mi eget, sollicitudin turpis. Aenean non neque luctus, commodo sapien eu, egestas sem. Duis finibus maximus lacus sit amet commodo. Nam ante mi, ornare in tortor vitae, cursus fringilla tellus. Duis pharetra facilisis varius. Aenean rutrum justo sit amet dapibus dapibus. Maecenas sodales tempus tortor, ac iaculis ante sagittis in. Suspendisse vel nisl sodales, viverra sapien eget, vehicula risus. Aliquam pellentesque diam mattis, suscipit nisl ut, congue libero.

venenatis (305 words)

Maecenas mollis aliquam ex, eu scelerisque odio varius vitae. Donec mi mauris, mattis sit amet vulputate quis, vestibulum eget arcu. Nunc euismod non lectus vel pulvinar. Ut interdum cursus velit, vitae consectetur enim iaculis id. Cras placerat leo aliquam sapien aliquam ultrices. In placerat justo eu ipsum blandit, sed auctor erat interdum. Praesent vel arcu nec lacus luctus sagittis a quis libero. Mauris eu odio quis lorem ornare mattis. Pellentesque venenatis nulla vitae consectetur posuere. Integer sit amet felis sed tortor pharetra mollis. Nam quis odio rhoncus, efficitur arcu at, viverra felis. Vestibulum consectetur venenatis varius. Donec egestas tortor tortor, at dapibus risus ultricies in. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi. Aenean vulputate eleifend tellus. Aenean leo ligula, porttitor eu, consequat vitae, eleifend ac, enim. Aliquam lorem ante, dapibus in, viverra quis, feugiat a, tellus. Phasellus viverra nulla ut metus varius laoreet. Quisque rutrum. Aenean imperdiet. Etiam ultricies nisi vel augue. Curabitur ullamcorper ultricies nisi. Nam eget dui. Etiam rhoncus. Maecenas tempus, tellus eget condimentum rhoncus, sem quam semper libero, sit amet adipiscing sem neque sed ipsum. Nam quam nunc, blandit vel, luctus pulvinar, hendrerit id, lorem. Maecenas nec odio et ante tincidunt tempus. Donec vitae sapien ut libero venenatis faucibus. Nullam quis ante. Etiam sit amet orci eget eros faucibus tincidunt. Duis leo. Sed fringilla mauris sit amet nibh. Donec sodales sagittis magna. Sed consequat, leo eget bibendum sodales, augue velit cursus nunc,

exercitationem (200 words)

Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur? At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident, similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum fuga. Et harum quidem rerum facilis est et expedita distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihil impedit quo minus id quod maxime placeat facere

reprehenderit (129 words)

"Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?"

I tried macros using "words count" But i didnt find a way to words count between headings Then display this total of word within Heading of the same paragraph


Solution

  • Sub SelectParagraphsBetweenLevelOneHeadings()
        Dim doc As Document
        Dim para As Paragraph
        Dim levelOneHeadings As Collection
        Dim i As Integer
        Dim cnt() As Long
    
        Set doc = ActiveDocument
        Set levelOneHeadings = New Collection
    
        For Each para In doc.Paragraphs
            If para.OutlineLevel = wdOutlineLevel1 Then
                levelOneHeadings.Add para.Range
            End If
        Next para
        
        ReDim cnt(1 To levelOneHeadings.count)
    
        For i = 1 To levelOneHeadings.count - 1
            cnt(i) = doc.Range(levelOneHeadings(i).End, levelOneHeadings(i + 1).Start).ComputeStatistics(wdStatisticWords)
        Next i
    
        cnt(levelOneHeadings.count) = doc.Range(levelOneHeadings(levelOneHeadings.count).End, doc.Content.End).ComputeStatistics(wdStatisticWords)
    
        
        For i = 1 To levelOneHeadings.count
            With levelOneHeadings(i)
                .End = .End - 1
                .InsertAfter " " & cnt(i)
            End With
        Next i
    End Sub
    

    enter image description here

    The code was run five times to show that every time it gives the same result and takes into account changes from the previous run: enter image description here