Errore di run-time '9'

Anonimo
2010-11-11T19:14:37+00:00

Buonasera a tutti, dovrei copiare dei dati da un foglio di un file ad un'altro foglio di altro file ed ho provato ad impostare il codice che posto:

Public Sub mCopiaIncolla()

    Dim wkA As Workbook

    Dim wkB As Workbook

    Dim shA As Worksheet

    Dim shB As Worksheet

    Dim lRigaA As Long

    Set wkA = Workbooks("A.xls")

    Set wkB = Workbooks("B.xls")

    Set shB = wkB.Worksheets("Foglio1")

    With shB

        Set shA = wkA.Worksheets(" Foglio2 ")    <========== errore di run time ' 9 '

        lRigaA = shA.Range("B" & .Rows.Count).End(xlUp).Row

        shA.Range("A" & lRigaA).Value = .Range("C6:E6").Value

        shA.Range("B" & lRigaA).Value = .Range("C8:E8").Value

        shA.Range("C" & lRigaA).Value = .Range("F12").Value

        shA.Range("D" & lRigaA).Value = .Range("F14").Value

        shA.Range("E" & lRigaA).Value = .Range("F18").Value

        shA.Range("F" & lRigaA).Value = .Range("C4:E4").Value

        shA.Range("G" & lRigaA).Value = .Range("F22:F23").Value

        shA.Range("H" & lRigaA).Value = .Range("F16").Value

        shA.Range("I" & lRigaA).Value = .Range("F29").Value

        shA.Range("J" & lRigaA).Value = .Range("F41").Value

        shA.Range("K" & lRigaA).Value = .Range("F43").Value

        shA.Range("M" & lRigaA).Value = .Range("E45:F45").Value

        shA.Range("N" & lRigaA).Value = .Range("C47:F47").Value

    End With

    Set shA = Nothing

    Set shB = Nothing

    Set wkA = Nothing

End Sub

ma quando provo ad eseguire il codice mi esce la segnalazione ( nel punto indicato dalla freccia )

Errore di Run Time'9' -   Indice non incluso nell'intervallo

Preciso che il foglio dove deve copiare i dati è in un file protetto, io lavoro con il file sempre aperto e senza password. E' giusto il codice da me impostato? Dove ho commesso l'errore? La domanda è anche rivolta per poter comprendere meglio la sequenza passo passo.

Un ultima cosa: con il file A in uso da un'altra persona e volendo copiare i dati esiste un modo di farlo senza che quest'ultimo chiuda il file per doverlo poi riaprire io per effettuare la copia dei dati stessi? Grazie e di nuovo buona serata.

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2010-11-12T13:20:02+00:00

Buongiorno Mauro, ho cambiato il nome del foglio ed adesso il codice va....mah misteri di Excel.Ora però ho un problema che è questo: io ho nel foglio un format che è presente fino a riga 3, colonne A:O, dove nelle celle sono inseriti dei dati e quindi mi dovrebbe copiare da riga 4 in giù, invece mi copia su riga 3 nonostante le relative celle siano occupate. Sbaglio qualcosa nell' impostare il codice? 

Con il debugger dice che l'ultima riga è la 3

lRigaA =      shA.Range("A" & .Rows.Count).End(xlUp).Row=3

Grazie per la pazienza.

Prova:

lRigaA = shA.Range("A" & .Rows.Count).End(xlUp).Row + 1

Se devi scrivere in una riga nuova, aumenti di 1 il valore restituito che rappresenta l'ultima riga che contiene un valore.


--

La soluzione, il codice ed i files sono forniti *così come sono* e l’autore declina ogni responsabilità per eventuali problemi causati dalla soluzione proposta se usata impropriamente. Create e utilizzate una copia del file per le vostre prove, *prima* di utilizzare la soluzione in files importanti.

--

Mauro Gamberini - Microsoft© MVP(Excel)

http://www.maurogsc.eu/

La risposta è stata utile?

0 commenti Nessun commento

7 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2010-11-12T00:04:06+00:00

            Set shA = wkA.Worksheets(" Foglio2 ")    <========== errore di run time ' 9 '

    Set shA = wkA.Worksheets("Foglio2")

    La risposta è stata utile?

    1 persona ha trovato utile questa risposta.
    0 commenti Nessun commento
  2. Anonimo
    2010-11-12T11:01:17+00:00

    Buongiorno a tutti e grazie per le risposte. Purtroppo continuo ad avere lo stesso problema anche togliendo gli spazi con il carattere maiuscolo(il foglio è in maiuscolo) o minuscolo.Ho fatto varie prove ma...Chiedevo questo: il file dove andare a copiare è un file in rete e quindi nella mia cartella dove ho questi due file ho un collegamento a questo file( file A.xls). Potrebbe essere per questo motivo che non trova il foglio? Ma il problema lo dovrei avere prima in questo punto o no?

     > *Set wkA = Workbooks("A.xls")*

    Inoltre 

    >shA.Range("A" & lRigaA).Value = .Range("C6:E6").Value

    >scriverà nella cella di destinazione solo il contenuto della cella C6, ignorando D6 e E6 

    sono una unione di celle, non so se è sufficiente mettere solo la prima cella. Un ultima cosa:

    se io provo a scrivere in un file che apro solo in lettura normalmente non mi è possibile poi salvarlo od esiste un'altro modo che io ignorantemente non conosco?

    Grazie per l'attenzione e buona giornata.

    1. Entrambi i files(che si possono tovare ovunque) con il codice che hai postato devono essere aperti nella stessa sessione di Excel. Quindi o da A apri B, o viceversa. Altrimenti cambiamo il codice.
    2. Puoi salvarlo: con un nome diverso diverso nella stessa cartella, con un nome anche uguale in una cartella diversa.

    --

    La soluzione, il codice ed i files sono forniti *così come sono* e l’autore declina ogni responsabilità per eventuali problemi causati dalla soluzione proposta se usata impropriamente. Create e utilizzate una copia del file per le vostre prove, *prima* di utilizzare la soluzione in files importanti.

    --

    Mauro Gamberini - Microsoft© MVP(Excel)

    http://www.maurogsc.eu/

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2010-11-12T10:16:11+00:00

    Buonasera a tutti, dovrei copiare dei dati da un foglio di un file ad un'altro foglio di altro file ed ho provato ad impostare il codice che posto:

    Public Sub mCopiaIncolla()

        Dim wkA As Workbook

        Dim wkB As Workbook

        Dim shA As Worksheet

        Dim shB As Worksheet

        Dim lRigaA As Long

       

        Set wkA = Workbooks("A.xls")

        Set wkB = Workbooks("B.xls")

        Set shB = wkB.Worksheets("Foglio1")

       

        With shB

            Set shA = wkA.Worksheets(" Foglio2 ")    <========== errore di run time ' 9 '

           ma quando provo ad eseguire il codice mi esce la segnalazione ( nel punto indicato dalla freccia )

    Errore di Run Time'9' -   Indice non incluso nell'intervallo

    Un ultima cosa: con il file A in uso da un'altra persona e volendo copiare i dati esiste un modo di farlo senza che quest'ultimo chiuda il file per doverlo poi riaprire io per effettuare la copia dei dati stessi? Grazie e di nuovo buona serata.

    *Errore di run-time '9'* che ricevi, specifica anche *Indice non trovato*, cioè non è stato trovato il foglio che corrisponde al nome che hai messo fra le virgolette. Ed in effetti, hai messo uno spazio *prima e dopo* Foglio2. Quindi la sitassi corretta è(se il nome del foglio è Foglio2):

    Set shA = wkA.Worksheets("Foglio2")

    Inoltre:

     shA.Range("A" & lRigaA).Value = .Range("C6:E6").Value

    scriverà nella cella di destinazione solo il contenuto della cella C6, ignorando D6 e E6. E così per le altre righe di codice simili. Non è chiaro cosa tu voglia fare.

    Quando tu apri un file già aperto da un altro utente, il file verrà aperto da te in sola lettura. Quindi puoi leggere/copiare i dati. Hai provato? Se sì, quali problemi riscontri?


    --

    La soluzione, il codice ed i files sono forniti *così come sono* e l’autore declina ogni responsabilità per eventuali problemi causati dalla soluzione proposta se usata impropriamente. Create e utilizzate una copia del file per le vostre prove, *prima* di utilizzare la soluzione in files importanti.

    --

    Mauro Gamberini - Microsoft© MVP(Excel)

    http://www.maurogsc.eu/

    Buongiorno a tutti e grazie per le risposte. Purtroppo continuo ad avere lo stesso problema anche togliendo gli spazi con il carattere maiuscolo(il foglio è in maiuscolo) o minuscolo.Ho fatto varie prove ma...Chiedevo questo: il file dove andare a copiare è un file in rete e quindi nella mia cartella dove ho questi due file ho un collegamento a questo file( file A.xls). Potrebbe essere per questo motivo che non trova il foglio? Ma il problema lo dovrei avere prima in questo punto o no?

     > *Set wkA = Workbooks("A.xls")*

    Inoltre 

    >shA.Range("A" & lRigaA).Value = .Range("C6:E6").Value

    >scriverà nella cella di destinazione solo il contenuto della cella C6, ignorando D6 e E6 

    sono una unione di celle, non so se è sufficiente mettere solo la prima cella. Un ultima cosa:

    se io provo a scrivere in un file che apro solo in lettura normalmente non mi è possibile poi salvarlo od esiste un'altro modo che io ignorantemente non conosco?

    Grazie per l'attenzione e buona giornata.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2010-11-12T07:53:46+00:00

    Buonasera a tutti, dovrei copiare dei dati da un foglio di un file ad un'altro foglio di altro file ed ho provato ad impostare il codice che posto:

    Public Sub mCopiaIncolla()

        Dim wkA As Workbook

        Dim wkB As Workbook

        Dim shA As Worksheet

        Dim shB As Worksheet

        Dim lRigaA As Long

       

        Set wkA = Workbooks("A.xls")

        Set wkB = Workbooks("B.xls")

        Set shB = wkB.Worksheets("Foglio1")

       

        With shB

            Set shA = wkA.Worksheets(" Foglio2 ")    <========== errore di run time ' 9 '

           ma quando provo ad eseguire il codice mi esce la segnalazione ( nel punto indicato dalla freccia )

    Errore di Run Time'9' -   Indice non incluso nell'intervallo

    Un ultima cosa: con il file A in uso da un'altra persona e volendo copiare i dati esiste un modo di farlo senza che quest'ultimo chiuda il file per doverlo poi riaprire io per effettuare la copia dei dati stessi? Grazie e di nuovo buona serata.

    *Errore di run-time '9'* che ricevi, specifica anche *Indice non trovato*, cioè non è stato trovato il foglio che corrisponde al nome che hai messo fra le virgolette. Ed in effetti, hai messo uno spazio *prima e dopo* Foglio2. Quindi la sitassi corretta è(se il nome del foglio è Foglio2):

    Set shA = wkA.Worksheets("Foglio2")

    Inoltre:

     shA.Range("A" & lRigaA).Value = .Range("C6:E6").Value

    scriverà nella cella di destinazione solo il contenuto della cella C6, ignorando D6 e E6. E così per le altre righe di codice simili. Non è chiaro cosa tu voglia fare.

    Quando tu apri un file già aperto da un altro utente, il file verrà aperto da te in sola lettura. Quindi puoi leggere/copiare i dati. Hai provato? Se sì, quali problemi riscontri?


    --

    La soluzione, il codice ed i files sono forniti *così come sono* e l’autore declina ogni responsabilità per eventuali problemi causati dalla soluzione proposta se usata impropriamente. Create e utilizzate una copia del file per le vostre prove, *prima* di utilizzare la soluzione in files importanti.

    --

    Mauro Gamberini - Microsoft© MVP(Excel)

    http://www.maurogsc.eu/

    La risposta è stata utile?

    0 commenti Nessun commento