use Win32::OLE qw(in with); use Win32::OLE::Const 'Microsoft Word'; $Win32::OLE::Warn = 3; # Fail on errors my $Word = Win32::OLE->GetActiveObject('Word.Application') || Win32::OLE->new('Word.Application', 'Quit'); $Word->{'Visible'} = 1; $Word->Documents->Add || die("Unable to create document ", Win32::OLE->LastError()); $MyRange = $Word->ActiveDocument->Content; $country_name = "Unknown"; # I'll fill this in later # add a table that is the header portion, 1 column by 1 row $Word->ActiveDocument->Tables->Add({ Range => $MyRange, NumRows => 1, NumColumns => 1, }); $Word->Selection->{Style} = wdStyleHeading1; $Word->Selection->TypeText ({ Text => "Hosts found in $country_name"}); $Word->Selection->MoveRight({Count => 2}); $Word->Selection->TypeText ({ Text => "\n\n" }); #add another table that is two lines below the first $Word->Selection->MoveDown({Count => 2}); # add another table that contains the data # collapse the range so the starting and ending points are equal $MyRange->Collapse({Direction => wdCollapseEnd}); $Word->ActiveDocument->Tables->Add({ Range => $MyRange, NumRows => 1, NumColumns => 4, }); $Word->Selection->TypeText ({ Text => "end" }); print Win32::OLE->LastError(); my $Cell = $Word->ActiveDocument->Tables(2)->Cell(1,2)->Select(); $Word->Selection->TypeText ({ Text => "This is the new text"});