note
Zero_Flop
My bad!<br><br>
As you probably know TIMTOWTDI. When I had time to test what I had posted earlier I discoverd that it is generating raw statistics, counting EOL and everything. I am assuming that you want the statistics that are availabile from the properties of that document. The code below will do what you want. <br><br>
I used the fuctions available within the application to do the work. This will usually work better for you when you are comunicating between applications.
<br> <br>
And thanks for posting the code!
<br>
<code>
use strict;
use Win32::OLE qw(in with);
use Win32::OLE::Const 'Microsoft Word';
use Win32::OLE::Enum;
# Here you have to call the file with "Name.pl C:\dir\file.doc"
# This will allow you to point the script anywere rather than
# having to put the script into the dir with the file.
die "Usage: perl doc_print.pl test.doc" unless @ARGV == 1;
my $Word = Win32::OLE->new( 'Word.Application', 'Quit' ) || die "Couldn't run Word";
my $Doc = $Word->Documents->Open(@ARGV[0]) || die "File does not exist or can not be opened";
# Selection can be the entire doc or refined to a sub-set of text
# It is easier to use the functions that exist in word to do the work.
my $num_pages = $Doc->ComputeStatistics(wdStatisticPages);
my $num_paragraphs = $Doc->ComputeStatistics(wdStatisticParagraphs);
my $num_lines = $Doc->ComputeStatistics(wdStatisticLines);
my $num_words = $Doc->ComputeStatistics(wdStatisticWords);
my $num_chars = $Doc->ComputeStatistics(wdStatisticCharacters);
my $num_charWs = $Doc->ComputeStatistics(wdStatisticCharactersWithSpaces);
printf "Page Count %d\n", $num_pages;
printf "Character (paragraphs) %d\n", $num_paragraphs;
printf "Line Count %d\n", $num_lines;
printf "Character (words) %d\n", $num_words;
printf "Character (with spaces) %d\n", $num_charWs;
printf "Character (wout spaces) %d\n", $num_chars;
$Doc->Close;
</code>
334720
334734