riconoscimento file di lavoro



  • riconoscimento file di lavoro
    di beppexile data: 09/11/2015 07:50:37

    Buongiorno a tutti e scusate la domanda banale:
    da cosa può dipendere il fatto che lavorando sul file "A" di excel, tutto funziona regolarmente, ma se apro un file "B" di excel, il codice VBA del file "A", macro, ecc, non mi trovano più i fogli del file dandomi errori vari, e, non appena chiudo il file "B", tutto riprende a funzionare?
    Bisogna specificare il file da qualche parte nel codice? Se si, dove e come?
    Grazie a tutti



  • di patel data: 09/11/2015 07:57:19

    come al solito una domanda senza allegati, come si fa a risponderti ? probabilmente nel file A i fogli hanno un nome specifico, ne file B hai dimenticato di mettere gli stessi nomi.





  • di beppexile data: 09/11/2015 08:05:31

    chiedo venia!


    File allegato

    quindi, se apri il file, funziona quasi tutto (a parte quello che ancora non ho fatto), ma se apri un qualsiasi altro file excel, il mio file non funziona più



  • di Marius44 data: 09/11/2015 08:47:29

    Ciao Beppe,
    nella Sub SettimanaLavaggio() alla fine l'anti sfarfallio (come lo chiami tu) non è stato reimpostato a TRUE pertanto lo schermo non si aggiorna, a meno non vai a lanciare un'altra macro che lo riporti a true.
    Ciao,
    Mario



  • di gdito data: 09/11/2015 09:24:44

    Ciao Beppe,
    il problema sta nel fatto che la macro cerca di lavorare sul foglio ATTIVO in quel momento, quindi se hai un documento aperto che non contiene i fogli con lo stesso nome di quelli su cui vuoi lavorare restituisce un errore.

    Per risolvere il problema puoi usare il nome del Workbook aperto (il file). Puoi fare in questo modo:

    in un modulo qualunqu, A_Carico ad esempio, crei una variabile che puoi chiamare FILE_LAVORO

    Public FOGLIO_LAVORO

    quindi nella funzione Workbook_Open() puoi assegnare il file corrente alla variabile, prima di "With Application"

    FILE_LAVORO = ActiveWorkbook.Name

    Quindi nei riferimenti ai range devi cambiare da (esempio preso da RICfrecciaSX)

    B = Range("RIF_ULTIMARIGA_INS").Value

    in

    B = Workbooks(FILE_LAVORO).Worksheets("DATABASE").Range("RIF_ULTIMARIGA_INS").Value

    Così hai un riferimento completo al file->foglio->cella e la macro non può sbagliare

    @Marius44: hai ragione ma nel momento in cui la macro finisce le sue operazioni ScreenUpdating torna automaticamente a TRUE, il problema in questo caso sono i riferimenti ai fogli che non trova



  • di beppexile data: 09/11/2015 11:31:32

    Ragazzi, siete grandi!

    Cit. Mauris44: " l'anti sfarfallio (come lo chiami tu) non è stato reimpostato a TRUE "
    Effettivamente non so come chiamarlo... le mie lacune sono molteplici! Grazie comunque perchè era una mia svista.

    Cit. gdito " il problema sta nel fatto che la macro cerca di lavorare sul foglio ATTIVO in quel momento "
    Immaginavo fosse qualcosa del genere, ma non sapevo come risolverlo. Ovviamente dovrò poi modificare tutte le macro in cui richiamo un determinato foglio, giusto?

    Per quanto riguarda il file nella complessità, è grazie al vostro forum che sono riuscito a metterlo in piedi... di mio conosco pochissimo o zero di programmazione.
    Quindi, ci tengo a ringraziare il forum, i suoi creatori e voi ragazzi che siete sempre pronti ad aiutare chi come me si avvicina a questo mondo meraviglioso che è la programmazione.
    Grazie



  • di gdito data: 09/11/2015 11:35:24

    Ciao Beppe,
    se vuoi che funzioni sempre correttamente si, devi modificarlo ovunque richiami un Range o uno Sheet.

    All'inizio di ogni Sub o Function inserisci

    Workbooks(FILE_LAVORO).Activate



  • di beppexile data: 09/11/2015 11:45:39

    Grazie