Hi All,
Need help with syntax for selecting a worksheet within excell file by name.
I have been trying $Sheet = $Book->Worksheets("Positions");
But I get invalid index error. Any help will be appreciated. I can not seem to find anything out there to show me how this is done.
Thanks!
use strict;
use Getopt::Std;
use Win32::OLE qw(in with);
use Win32::OLE::Const 'Microsoft Excel';
use Cwd;
$Win32::OLE::Warn = 3; # die on errors...
my $Excel = Win32::OLE->GetActiveObject
('Excel.Application') || Win32::OLE->new
('Excel.Application', 'Quit');
$Excel->{'Visible'} = 0; #0 is hidden, 1 is visible
$Excel->{DisplayAlerts}=0; #0 is hide alerts
# application or open new
opendir DIR , '.' or die "Could not open current dir: $!\n";
my @FilePattern = grep(/.xls/i, readdir DIR);
closedir DIR;
my $x="";
foreach $x (@FilePattern) {
my $file = $x;
my $out = (split(/\./,$file))[0];
print "in $file\n";
print "out $out\n";
my $dir = getcwd();
print "$dir\n";
my $book = $dir . "\\" . $file;
my $new = $dir . "\\" . $out .".txt";
my $Book = $Excel->Workbooks->Open($book); # open Excel file
#returns name of 9 worksheets
for (1..$Book->Worksheets->Count) {
print "$_: <", $Book->Worksheets($_)->Name, ">\n";
}
my $Sheet = $Book->Worksheets('Position'); #There is a worksheet calle
+d Position
$Book->SaveAs({Filename => $new,
FileFormat => xlText});
$Book->Close;
$Excel->Quit();
}
I get the following output:
1: <AccountSummary>
2: <EquitySummary>
3: <Requirements>
4: <CurrencyBalances>
5: <SMASummary>
6: <SMADetail>
7: <Activity>
8: <Position>
9: <OptionsHedgeSummary>
Win32::OLE(0.1709) error 0x8002000b: "Invalid index"
in METHOD/PROPERTYGET "Worksheets" at C:\lab\gsc\xls2tab.pl line 36
</code>
This is driving me nuts. Thank to any who can point me in correct path.
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|