Interazione con excel

di il
5 risposte

Interazione con excel

Ciao a tutti.

Sto avendo un problema (a dire il vero molti problemi, ma una cosa per volta) con una automazione excel.

il file excel che devo compilare (prendendo i dati da access ovviamente) è costituito da 7 fogli.

Nell'automazione fino al foglio 5 va tutto bene, ma il 6 e il 7 sembra che proprio non li veda.

Ho fatto una prova riempiendo un paio di celle a caso:

For I = 1 To 7
    
    Set ws = wb.Worksheets(I) 
    
    ws.Cells(1, 1) = "SONO SUL FOGLIO GIUSTO"
    ws.Cells(10, 10) = "SONO SUL FOGLIO GIUSTO"

Next I

Continua ad ignorare i fogli 6 e 7

Se però creo un nuovo file excel con 7 fogli, mi ritrovo correttamente tutti i fogli con le due celle indicate piene.

Per qualche motivo, nel file originale non vuole vedere quei due fogli.

Siccome il file excel è stato fornito con i fogli formattati in un modo specifico, come facco a capire e risolvere il problemi dei fogli 6 e 7?

Grazie a tutti

Andrea

5 Risposte

  • Re: Interazione con excel

    Senza avere il file a disposizione è difficile capire il problema quindi sarebbe utile postarlo.

  • Re: Interazione con excel

    Prova ad iterare in questo modo:

    For Each ws In ActiveWorkbook.Worksheets
    	ws.Cells(1, 1) = "SONO SUL FOGLIO GIUSTO"
        ws.Cells(10, 10) = "SONO SUL FOGLIO GIUSTO"
    Next
  • Re: Interazione con excel

    Condivido il pensiero si Stifone. In ogni caso, proverei a verificare di non avere fogli nascosti (sia xlSheetHidden che xlSheetVeryHidden). È uno dei casi in cui ti ci fa scrivere/leggere, ma senza che siano appunto visibili.

    Dovresti comunque trovarli nella TreeView del progetto.

  • Re: Interazione con excel

    Grazie dei consigli (sono allergico ad excel ed evito di usarlo, ma l'amministrazione a volte vuole i loro file nel formato che dicono loro e quindi mi tocca)

    25/11/2025 - Sgrubak ha scritto:

    Dovresti comunque trovarli nella TreeView del progetto.

    In effetti, una volta aperto l'editor di excel mi sono accorto che qualcosa non andava nella denominazione dei fogli. mi sono ritrovato 2 fogli nascosti (che non so a che servano), ma soprattutto i fogli che mi davano problemi erano nominati Foglio10 e Foglio14.

    Inoltre, anche se funzionavano, un paio di altri fogli avevano indice diverso da quelli richiamati dalla mia funzione in access, però nella treeview il loro ordine coincideva con l'indice che avevo assegnato (quindi conta l'ordine nella treeview o il nome del foglio? anche perchè nella treeview non posso spostarli di ordine...).

    Ho eliminato i fogli nascosti e rinominato i 2 fogli incriminati, ma non solo quelli, ho rinominato tutti i fogli con l'indice che uso nella funzione.

    Sembra che abbia risolto.

    Grazie a tutti per il supporto.

    Andrea

  • Re: Interazione con excel

    25/11/2025 - Jocman ha scritto:

    sono allergico ad excel ed evito di usarlo

    Tranquillo, compenso io che invece ne sono un fanatico. XD

    25/11/2025 - Jocman ha scritto:

    conta l'ordine nella treeview o il nome del foglio?

    Quando accedi alle Collection Sheets o Worksheets (che sono diverse), l'indice corrisponde all'ordine dei fogli nella cartella.

    Entrambe la proprietà Items delle due Collection, oltre all'indice numerico (di tipo Long) accettano una String: in quel caso si intende il Name del foglio che equivale a quanto riportato nella linguetta che vedi in Excel ed anche nella TreeView all'interno delle parentesi tonde. Usare il Name aiuta ad evitare queste discrepanze di indice che possono essere difficilmente identificabili ma ti rende il codice più "rigido": se può capitare di rinominare un foglio, poi devi mettere mano al codice. Per contro, se cambi l'ordine dei fogli, resti certo che le operazioni avvengano in quel foglio esatto.

    Quello che vedi nella TreeView PRIMA delle parentesi tonde è il CodeName. Anch'esso può essere usato per referenziare il foglio ma in altri scenari operativi. In un ciclo, come nel tuo caso, non è pratico.

Devi accedere o registrarti per scrivere nel forum
5 risposte