sub REFRESH_EXCEL{ #removed code to get the book name, etc.. $book = $excel->Workbooks->Open("$programDir\\$filename"); #removed some error checking eval{ &LOG("Refreshing all queries in this report.\n"); $book->RefreshAll unless $debug > 2; sleep 30; until(&REFRESH_COMPLETE($book)){ sleep 30; } }; #removed code to do stuff with the refreshed workbook } sub REFRESH_COMPLETE{ my $book = pop(@_); #for each worksheet in the workbook foreach my $sheet (in $book->{Sheets}){ foreach my $qryTable (in $sheet->{QueryTables}){ return undef if $qryTable->{Refreshing} > 0; } } return 1; }