Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot
 
PerlMonks  

Get word count from Word document via OLE

by polypompholyx (Chaplain)
on May 10, 2007 at 12:17 UTC ( [id://614609]=CUFP: print w/replies, xml ) Need Help??

The most obvious solution to this ($doc->Words->{'Count'}) doesn't actually do what you want, because it uses a different defintion of 'word' from that used by the word-count dialogue box. This version returns the same number as reported by Word 2003.
use strict; use warnings; use Cwd qw( abs_path ); use Win32::OLE; use Win32::OLE::Const; my $ole_const = { %{ Win32::OLE::Const->Load ('Microsoft Word 11.0 Object Library') }, %{ Win32::OLE::Const->Load ('Microsoft Office 11.0 Object Library') }, }; my @files = ( shift @ARGV ) || glob( "*.doc" ); my $word = Win32::OLE->new( 'Word.Application', 'Quit' ) or die "Can't start Word: " . Win32::OLE->LastError . "\n"; for my $file ( @files ) { my $fully_qualified_file = abs_path( $file ); my $doc = $word->Documents->Open( $fully_qualified_file ) or die "Can't open document '$fully_qualified_file': " . Win32::OLE->LastError . "\n"; my $word_count = $doc->ComputeStatistics ({ Statistic => $ole_const->{'wdStatisticWords'}, IncludeFootnotesAndEndnotes => $ole_const->{'msoTrue'}, }); $doc->Close(); printf "%-25s %6u\n", $file, $word_count; } $word->Quit(); exit 0;

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: CUFP [id://614609]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others imbibing at the Monastery: (6)
As of 2024-04-19 11:00 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found