Metodo Sheets copy



  • Sheets.copy
    di Maste (utente non iscritto) data: 21/06/2009

    Sottopongo il quesito:
    il codice di seguito apre tre diversi file excel e ne copia i fogli su uno di essi.
    la cosa strana è che ogni volta che apro il database access che contiene il codice, la prima volta che lo lancio il codice esegue perfettamente.la seconda volta mi genera un errore sulla prima istruzioni copy "indici non compresi nell'intervalo".se chiudo il db e lo riapro e rieseguo il codice,la prima volta funziona, se lo rilancio rigenera l'errore.
    e’ come se ogni volta che si esegue la funzione dopo all’apertura del db, rimanga in memoria qualcosa, fino alla chiusura del db, che ne compromette l’ulteriore esecuzione.
    qualcuno sa dirmi cosa sbaglio ?
     
    Dim appExc as New excel.Application
    
    With appExc
        
        .Visible = True
    
        .Workbooks.Open FileName:="C:Cartella1.xlsx"
        .Workbooks.Open FileName:= "C: Cartella2.xlsx"
        .Workbooks.Open FileName:= "C:Cartella3.xlsx"
        .Windows("Cartella2.xlsx").Activate
        .Sheets("FoglioCartella2").Select
        .Sheets("FoglioCartella2").Copy After:=Workbooks("Cartella1.xlsx").Sheets("FoglioCartella1")
        
        .Windows("Cartella3.xlsx").Activate
        .Sheets("FoglioCartella3").Select
        .Sheets("FoglioCartella3").Copy After:=Workbooks("Cartella1.xlsx").Sheets("FoglioCartella1")
    
    End With
    



  • di Maste (utente non iscritto) data: 23/06/2009

    Di nuovo ciao a tutti.
    c'è qualche anima buona che sa dirmi dove commetto l'errore.... provo e riprovo ma non ne vengo a capo.
    ciao.



  • di Maste data: 23/06/2009

    Aiutatemiiiiiiiiiiiiiiii



  • di Argon (utente non iscritto) data: 23/06/2009

    Prova con questo alla fine del codice
     
    set appexc = nothing



  • di Maste data: 23/06/2009

    Grazie argon.
    ma non funziona neanche così.
    la cosa strana è che all'epertura del db funziona. rieseguendo il codice da errore.
    penso anch'io che tenga qualcosa in memoria che pregiudica la successiva esecuzione ma non riesco a capire cosa. e con il più che logico tuo suggerimento non va ugualmente. deve esserci altro ma non capisco cosa.
    grazie comunque e se ti viene in mente qualche altra possibile soluzione ... son qui.
    ciao.



  • di Miglio (utente non iscritto) data: 23/06/2009

    Non vorrei dirti una stupidaggine, ma alla fine della macro chiuderei le cartelle aperte in modo che al sucessivo comando si riaprano.



  • di Maste data: 23/06/2009

    Grazie anche a te miglio.
    provato ad inserire anche l'istruzione di chiusura nel codice....ma sempre lo stesso problema.
    c'è da dire che comunque le chiudevo io manualmente prima di proseguire (dopo le istruzioni che ho scritto c'è un msgbox che mette in attesa il codice, cosi controllavo la corretta esecuzione del codice, chiudevo excel, e proseguivo)
    sta diventando un mistero sempre più fitto.



  • di Miglio (utente non iscritto) data: 23/06/2009

    Mi dispiace che non vada, ho visto comunque che i file sono di office 2007, forse mi sbaglio ma mi sono imbattuto in diversi misteri con quel tipo di office, io uso ancora il 2003.



  • di Big ronnie (utente non iscritto) data: 24/06/2009

    Ciao maste,

    prova a riattivare la cartella 1 prima di copiare.

    .sheets("fogliocartella2").select
    .workbooks("cartella1").activate
    .sheets("fogliocartella2").copy after:=workbooks("cartella1.xlsx").sheets("fogliocartella1")



  • di Maste data: 24/06/2009

    Ciao big.
    anche riattivando la cartella prima di copiarci non funziona quando lo richiamo.
    sembra un codice cosi semplice eppure....



  • di Big ronnie (utente non iscritto) data: 24/06/2009

    Hai tolto l'estensione xlsx nell'istruzione copy?



  • di Maste (utente non iscritto) data: 24/06/2009

    Si l'ho tolta.
    nell'istruzione copy c'è il solo nome della cartella senza suffissi.
    anche se comunque funziona anche col suffisso. il problema è che funziona solo al primo lancio.se poi rieseguo il codice senza aver prima chiuso il database da errore di "indice non compreso nell'itervalllo"



  • di Miglio (utente non iscritto) data: 25/06/2009

    Ciao maste, hai risolto il problema??

    prova alla fine della macro con

    appexc.quit
    set appexc = nothing

    mandi



  • di Maste (utente non iscritto) data: 25/06/2009

    Sempre uguale....sighhhhhhhhhhhhhhhhhh



  • di Maste (utente non iscritto) data: 30/06/2009

    Nessuno sa risolvere il mistero ?????????