SriramGrandhi has asked for the wisdom of the Perl Monks concerning the following question:
While I am trying to access a data from a table in MsWord document using Perl an internal beep is generating. Please tell me how to resolve this issue. The program is::
package ReadingTR; #use strict; #use warnings; use Carp; use Cwd 'abs_path'; use Win32::OLE; #use Win32::OLE qw(in with); #use Win32::OLE::Variant; use Win32::OLE::Const 'Microsoft Word'; use Win32::OLE::Const 'Microsoft Excel'; $searchdir = $ARGV[0]; $TotalPath; #print "1 --- $searchdir\n"; $val = opendir(SEARCHDIRH ,"$searchdir") or croak "die1 - $!"; #print "6 -- $val\n"; while($filedir = readdir SEARCHDIRH) { # print "2---- $filedir\n"; $tempsearch = $searchdir.qq{/}; # print "3 --- $tempsearch\n"; next if ($filedir eq qq{.}); next if ($filedir eq qq{..}); if(($TotalPath = ($tempsearch.$filedir)) =~ m/\.doc/gix) { print "4 --- $TotalPath\n"; $abs= abs_path($TotalPath); $abs =~ s/\//\\/xg; print $abs."\n"; &Word_Func($abs); } else { $TotalPath = $searchdir."/".$filedir; print "7--- $TotalPath\n"; } } sub Word_Func { my $TotalPath = shift; #print "5--------$TotalPath\n"; $Word = CreateObject Win32::OLE 'Word.Application' || croak $!; $Word->{'Visible'} = 1; $Word->{DisplayAlerts} = 1; $Word->Documents->Open("$TotalPath") || croak"Unable to open $TotalPat +h --- Win32::OLE->LastError()"; $Excel = Win32::OLE->GetActiveObject('Excel.Application') || Win32::OL +E->new('Excel.Application'); $Excel->{'Visible'} = 1; #0 is hidden, 1 is visible $Excel->{DisplayAlerts}=1; #0 is hide alerts $filename = "D:/OLE Progs/Test.xls"; #Create New Book $workbook = $Excel->Workbooks->Add(); $Excel->{SheetsInNewWorkBook} = 3; $worksheet1 = $workbook->Worksheets(1); $worksheet2 = $workbook->Worksheets(2); $worksheet3 = $workbook->Worksheets(3); #Naming the sheets $worksheet1->{Name} = "ProjectInfo"; $worksheet2->{Name} = "ChkListTable"; $worksheet3->{Name} = "FindingsListTable"; # get the first table my $table1 = $Word->ActiveDocument->Tables(1); # get the Second table my $table2 = $Word->ActiveDocument->Tables(2); # get the Third table my $table3 = $Word->ActiveDocument->Tables(3); for($i = 1; $i<7;$i++) { $text1 = $table1->Cell($i,1)->Range->{Text}; #Entering a value into cell $worksheet1->Range("A$i")->{Value} = "$text1"; } for($j=2;$j<10;$j++) { $Msg = $table2->Cell($j,2)->Range->{Text}; $Msg1 = $table2->Cell($j,3)->Range->{Text}; $text2 = $table2->Cell($j,4)->Range->{Text}; # print "$Msg1\n$text2\n"; if($Msg1 eq $text2) { $worksheet2->Range("A$j")->{Value} = "$Msg"; $worksheet2->Range("C$j")->{Value} = "Matched"; } elsif($Msg1 ne $text2) { $worksheet2->Range("A$j")->{Value} = "$Msg"; $worksheet2->Range("C$j")->{Value} = "NotMatched"; } } for($k=2;$k<4;$k++) { $Msg2 = $table3->Cell($k,1)->Range->{Text}; $text3 = $table3->Cell($k,2)->Range->{Text}; if($Msg2 eq $text3) { $worksheet3->Range("A$k")->{Value} = "$Msg2"; $worksheet3->Range("B$k")->{Value} = "$text3"; $worksheet3->Range("C$k")->{Value} = "Matched"; } elsif($Msg2 ne $text3) { $worksheet3->Range("A$k")->{Value} = "$Msg2"; $worksheet3->Range("B$k")->{Value} = "$text3"; $worksheet3->Range("C$k")->{Value} = "NotMatched"; } } print "Closing Document And Word\n"; $Word->ActiveDocument->Close(); $Word->Quit; return; } 1;
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: How to resolve the sound error while executing this program?
by CountZero (Bishop) on Mar 17, 2012 at 10:44 UTC | |
|
Re: How to resolve the sound error while executing this program?
by marto (Cardinal) on Mar 17, 2012 at 14:05 UTC | |
by SriramGrandhi (Initiate) on Mar 19, 2012 at 05:52 UTC | |
by marto (Cardinal) on Mar 19, 2012 at 10:09 UTC |