+ Rispondi al Thread
Pagina 2 di 3 primaprima 123 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 21

Discussione: VB - copiare in una cartella di lavoro e incollare in un'altra cartella di lavoro.

  1. #11
    L'avatar di dodo47
    dodo47 non è in linea Topo di biblioteca
    Post
    3,107
    Ciao
    prova
    codice:
    Sub Copia()
    Dim r As Integer
    mRange = Range("C3:C26")
    mCod = Range("C2")
    Workbooks.Open "C:\Documents and Settings\utente\Desktop\Nuovo.xls"
    For k = 10 To 281
        If mCod = Cells(2, k) Then
           For x = 2 To 25
           Cells(x, k) = mRange(x - 1, 1)
           Next
        End If
    Next k
    End Sub
    Solo un dubbio: For k = 10 To 281 siamo sicuri 281 colonne?

    saluti

  2. #12
    PaoloTalini non è in linea Scribacchino
    Luogo
    Pontedera (PI)
    Post
    862

    Arrow

    Andrea:
    Il problema, a mio parere, sta nel cambiare la selezione sui diversi file e nello scrivere l'uguaglianza tra due diversi file: If Cells(2, 3) = Cells(2, k) Then
    perchè cells(2,3) deve essere riferito al primo file e cells(2,k) deve essere riferito al secondo file.
    Il codice dovrebbe:
    1)Leggere i dati presenti nella colonna C (3) dal rigo 2 al rigo 26
    2)Aprire il nuovo file.
    3)Verificare che i dati della cella, riga 2,colonna 10/281, coincidano
    con i dati presenti nella variabile MiaVar(2)
    4)Quando il punto 3 è validato procede alla scrittura dei righi 2/26 della colonna validata.
    5)NSheet definisce il nome della scheda dove srvere i dati
    codice:
    Function ProvaAndrea(NSheet As String)
        Dim xColonna As Integer
        Dim MiaVar(26) As Variant
        Dim idi As Integer
        For idi = 2 To 26
            MiaVar(idi) = Cells(idi, 3)
        Next
        Workbooks.Open Filename:="C:\Documents and Settings\utente\Desktop\Nuovo.xls"
        For xColonna = 10 To 281
            Stop
            If Worksheets(NSheet).Cells(2, xColonna) = MiaVar(2) Then
                For idi = 2 To 26
                    Worksheets(NSheet).Cells(idi, xColonna) = MiaVar(idi)
                Next
            End If
        Next
    End Function
    Prova e fammi sapere.

    P.S. Ho inserito un'istruzione che dovrai eiliminare.
    Se avessi fatto il debug del codice avresti capito dove non funziona.
    Usando l'Evento Open ti consiglio di inserire la gestione degli errori. Vedi Istruzione Error.
    Ultima modifica di PaoloTalini; 16-04-2012 20:54 
    P. Talini
    __________________________________________________ _______________________________________
    Tutti sanno che una cosa è impossibile da realizzare,
    finché arriva uno sprovveduto che non lo sa e la inventa. (Albert Einstein)

  3. #13
    andrea.ciao non è in linea Novello
    Post
    9

    Question Ancora non va!

    Questo è il codice che ho inserito:

    codice:
     
    Sub Elabora ()
        Dim xColonna As Integer
        Dim MiaVar(26) As Variant
        Dim idi As Integer
        For idi = 2 To 26
            MiaVar(idi) = Cells(idi, 3)
        Next
        Workbooks.Open Filename:="C:\Documents and Settings\dcurto\Desktop\NO\questi dovevano essere ufficiali\Riepilogo inevaso 2012.xls"
        For xColonna = 10 To 281
            If Worksheets("GV").Cells(2, xColonna) = MiaVar(2) Then
                For idi = 2 To 26
                    Worksheets("GV").Cells(idi, xColonna) = MiaVar(idi)
                Next
            End If
        Next
    End Sub
    La macro mi da un errore alla seguente riga:

    codice:
    If Worksheets("GV").Cells(2, xColonna) = MiaVar(2) Then
    Errore di run-time '1004'

    In realtà, i dati li copia, ma la macro viene bloccata e non viene eseguita per intero, considerato che alla fine ho aggiunto altri comandi, quali salva e chiudi.

    codice:
    Activeworkbook.save
    Activeworkbook.close

  4. #14
    andrea.ciao non è in linea Novello
    Post
    9

    Post si, 281 colonne

    Dodo47:
    Sicuro, sono 281 colonne

    Ho provato ad implementare il tuo comando, ma non va.

    A questo punto, voglio cercare (e te ne sono grato se mi dai una mano), di rendere effettiva e funzionante la macro di PaoloTalini, che sembra funzionare (eccetto qualche errore).

    Grazie mille.

  5. #15
    PaoloTalini non è in linea Scribacchino
    Luogo
    Pontedera (PI)
    Post
    862

    Arrow

    Andrea:
    Excel 2003 ha 00256 come limite colonne . File .xls
    Excel 2007 ha 16384 come limite colonne . File .xlsx

    Domenico aveva ragione.
    Dovrai ho usare un file xlsx oppure limitare il ciclo a 256 colonne.

    Il codice scritto da Domenico mi sembrava ottimo.
    Preferisco usare cicli nidificati controllati da indici.

    Il codice funziona ho potuto testarlo su Excel 2007.
    Codice se usato con file xls:
    codice:
    Function ProvaAndrea(NSheet As String)
        Dim xColonna As Integer
        Dim MiaVar(26) As Variant
        Dim idi As Integer
        For idi = 2 To 26
            MiaVar(idi) = Cells(idi, 3)
        Next
        Workbooks.Open Filename:="C:\Documents and Settings\dcurto\Desktop\NO\questi dovevano essere ufficiali\Riepilogo inevaso 2012.xls"
        
        For xColonna = 10 To 256
            If Worksheets(NSheet).Cells(2, xColonna) = MiaVar(2) Then
                For idi = 2 To 26
                    Worksheets(NSheet).Cells(idi, xColonna) = MiaVar(idi)
                Next
            End If
        Next
    End Function
    Fammi sapere.
    P. Talini
    __________________________________________________ _______________________________________
    Tutti sanno che una cosa è impossibile da realizzare,
    finché arriva uno sprovveduto che non lo sa e la inventa. (Albert Einstein)

  6. #16
    PaoloTalini non è in linea Scribacchino
    Luogo
    Pontedera (PI)
    Post
    862
    Domenico:
    (eccetto qualche errore).
    Di quale errore?
    P. Talini
    __________________________________________________ _______________________________________
    Tutti sanno che una cosa è impossibile da realizzare,
    finché arriva uno sprovveduto che non lo sa e la inventa. (Albert Einstein)

  7. #17
    L'avatar di dodo47
    dodo47 non è in linea Topo di biblioteca
    Post
    3,107
    Ciao Paolo
    non ho certo detto io "eccetto qualche errore"....

    saluti

  8. #18
    andrea.ciao non è in linea Novello
    Post
    9

    Thumbs up Ok

    Ok, funziona.

    (eccetto qualche errore): mi riferivo all'errore di run-time '1004'

    Grazie a te Paolo, a Domenico e a tutti coloro che hanno cercato di darmi una mano.

    Ciao

  9. #19
    L'avatar di dodo47
    dodo47 non è in linea Topo di biblioteca
    Post
    3,107
    Naturalmente ti da l'errore 1004 visto che evidentemente utilizzi il 2003 che ha 256 colonne. Non a caso avevo scrito: "siamo sicuri 281 colonne?"

    saluti

  10. #20
    andrea.ciao non è in linea Novello
    Post
    9

    Red face giusto

    Grazie Domenico!!

+ Rispondi al Thread
Pagina 2 di 3 primaprima 123 ultimoultimo

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi