http://qs321.pair.com?node_id=11106307


in reply to Re^2: Can't Find my way in Excel
in thread Can't Find my way in Excel

Please tell us the exact and complete error message. Otherwise, we can't know what exactly goes wrong with your script.

Replies are listed 'Best First'.
Re^4: Can't Find my way in Excel
by ExReg (Priest) on Sep 17, 2019 at 17:44 UTC

    Sorry, "Undefined subroutine &main:: called at (eval 14)D:/software/Perl/lib/perl5db.pl:646 line 2, <$lh> line 7." This is the error I see in perl's debugger as I try each variation. If I try just running it without debug, I get "Can't use string ("") as a subroutine while "strict refs" in use at search.pl line 100, <$lh> line 7." That is true if the curlies are around the whole expression inside the parens or not. Without "use strict" I get the Undefined subroutine error.

      Can't use string ("") as a subroutine while "strict refs" in use at se +arch.pl line 100

      The example code you show doesn't have 100 lines.

      Please reduce the code you run until it has below 20 lines. Then post that reduced code together with the error message that corresponds to the reduced code.

      It's hard for us to interpret an error message for code we're not seeing.

        My apologies for bad transcription. It is hard moving from computer to computer, copying and typing. I was hoping it was obvious what I was trying to do. The old way was what is shown above. The new way I am trying to find is replacing the search by row and cell and just use a Find. So the new code would be

        use strict; use Win32::OLE; use Win32::OLE::Const 'Microsoft Excel'; my $Excel = Win32::OLE->new('Excel.Application','Quit') or die "Cannot + open Excel\n"; my $Book = $Excel->workbooks->Open(FileName => "c:/foo.xlsx", ReadOnly + => 1) or die "Cannot open Spreadsheet\n"; my $num_sheets = $Book->Sheets->Count; for my $sheet_num ( 1 .. $num_sheets ) { my $Sheet = $Book->worksheets( $sheet_num ); my $max_col = $Sheet->UsedRange->SpecialCells( xlCellTypeLastCell +)->Column; my $max_row = $Sheet->UsedRange->SpecialCells( xlCellTypeLastCell +)->Row; my $loc = $Sheet->UsedRange->Cells->Find({What=>"cabbage"}); }

        Running in debug gives "Undefined subroutine &main:: called at (eval 14)D:/software/Perl/lib/perl5db.pl:646 line 2, <$lh> line 7."

        Running without debug gives "Can't use string ("") as a subroutine while "strict refs" in use at search.pl line 12, <$lh> line 7."

        Again, I am trying to do my best to transcribe.