El mensaje dice que has intentado escribir en una hoja que no existe, porque a sheets() le has pasado un índice que no existe en el libro.
En el código, veo que incrementas $paso, pero ¿dónde lo pones a 0 otra vez? ¿Y si resulta que entre la hoja que está en el segundo lugar y el tercero no tiene '2' como índice? Es más... si la labor es repartir los 70 000 registros en hojas de 65 000 líneas, ¿las hojas YA están creadas o las tienes que crear en tu programa? Yo supongo que si lo que quieres es automatizarlo todo, querrás crear las hojas a medida que necesitas espacio.
En el primer mensaje comentas que quieres seleccionar las hojas por su nombre, y te di una solución, pero en el código del segundo mensaje no usas los nombres de las hojas para nada. Tendrás que decidir qué quieres hacer. Si solo se trata de repartir los registros por las hojas con un máximo de 65 000 registros, no necesitamos nombres, solo crear una nueva hoja antes de escribir en ella, cada vez que lleguemos a un registro que sea múltiplo de 65 000. Para esto último puedes usar el operador módulo (%) para saberlo, además de la variable especial $. que contendrá el número de líneas leídas del archivo.
Ahora bien, si las hojas ya están creadas, hay que seguir la recomendación del manual.
Using perl Syntax Highlighting
my @hojas_actuales = $libro->sheets(); # listado de hojas
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
luego, cada elemento de @hojas_actuales es una hoja, del que podemos saber su nombre, y escribir en ella:
Using perl Syntax Highlighting
my $hoja = $hojas_actuales[$i];
print $hoja->get_name(), "\n"; # imprime el nombre de la hoja
$hoja->write_number( $x, $y++, $c, $decimalNormal ); # escribimos en ella
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4