Say the test.doc contains the word 'perl' in page 1. The following code finds the word correctly but not the page number.
Can someone give me some hints? Thanks :)==UPDATE==use strict; use warnings; use Win32::OLE::Const 'Microsoft Word'; my $query = 'perl'; my $file = "E:/test.doc"; my $Word = Win32::OLE->new('Word.Application', 'Quit'); $Word->{'Visible'} = 0; my $doc = $Word->Documents->Open($file) or die "Error opening the docu +ment!\n"; my $paragraphs = $doc->Paragraphs() ; my $enumerate = new Win32::OLE::Enum($paragraphs); while ( defined (my $paragraph = $enumerate->Next()) ) { my $words = Win32::OLE::Enum->new( $paragraph->{Range}->{Words} ); while ( defined ( my $word = $words->Next() ) ) { my $text = $word->{Text}; if ($text =~ /$query/){ #$text->Select; $Doesn't work $paragraph->Select; #wrong page number. my $page_number = $Word->Selection->Information(wdActi +veEndPageNumber); print "Found $text in Page $page_number!\n"; + } } } $Word->ActiveDocument->Close ; $Word->Quit;
Problem Solved
I've just found that by replacing the $paragraph->Select line with $word->Select , the code seems to be able to find the correct page number :)
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |