Beefy Boxes and Bandwidth Generously Provided by pair Networks
XP is just a number

Get word count from Word document via OLE

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

Description: 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
            => $ole_const->{'wdStatisticWords'},
            => $ole_const->{'msoTrue'},
    printf "%-25s %6u\n", $file, $word_count;


exit 0;
Comment on Get word count from Word document via OLE
Download Code

Back to Snippets Section

Log In?

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

How do I use this? | Other CB clients
Other Users?
Others wandering the Monastery: (4)
As of 2016-02-06 21:09 GMT
Find Nodes?
    Voting Booth?

    How many photographs, souvenirs, artworks, trophies or other decorative objects are displayed in your home?

    Results (236 votes), past polls