http://www.perlmonks.org?node_id=908758


in reply to Re: Find occurence information on a word in a doc file using Win32::OLE
in thread Find occurence information on a word in a doc file using Win32::OLE

Maybe this macro will help.

Sub Test() Dim i As Long Dim myInfo As String Dim myRange As Range Dim rgeSave As Range Set rgeSave = Selection.Range Application.ScreenUpdating = False 'Loop: Do a Search, Then Execute Some Other Commands Inside 'a "Do Until End of Document" Loop (version 2, thanks to Shawn Wilson) +: Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "13" .Forward = True .Wrap = wdFindStop .Format = False .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Do While Selection.Find.Execute 'Do something within the found text myInfo = myInfo & Selection.Information(wdFirstCharacterLineNumber) + & " " & Selection.Information(wdActiveEndAdjustedPageNumber) & " " Loop MsgBox myInfo Application.ScreenRefresh Application.ScreenUpdating = True rgeSave.Select End Sub
  • Comment on Re^2: Find occurence information on a word in a doc file using Win32::OLE
  • Download Code

Replies are listed 'Best First'.
Re^3: Find occurence information on a word in a doc file using Win32::OLE
by ZJ.Mike.2009 (Scribe) on Jun 09, 2011 at 02:31 UTC

    @Generoso, thank you for the macro snippet. Really appreciate it :)

    I never used macro until now. I replaced .Text = "13" with .Text = "perl" and ran the modified macro on the test.doc file and I got the desired information. Cool!

    But the problem I posted is only a smaller part of a larger problem. For example, in the real task, it's not just one single word (it's a list of words) and I also need to remove duplicate page numbers (e.g. if 'perl' occurs more than once in one page, it will count as just once).

    But I guess the macro probably can also do that too although the coding might involve a different complexity level compared with a Perl solution. I'll probably need to dig deeper.

    Anyway it's good to know the macro solution. Thank you again