+ Rispondi al Thread
Pagina 1 di 3 123 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21

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

  1. #1
    andrea.ciao non è in linea Novello
    Post
    9

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

    Considerato che questo comando mi consente di valutare quale cella (2,K) è uguale alla cella (2,3) e una volta individuata di copiare l'intervallo di celle (C3:C26) ed incollarlo a partire dalla cella (2,K).

    codice:
    For k = 10 To 281
         If Cells(2, 3) = Cells(2, k) Then
            Range("C3:C26").Select
            Selection.Copy
            Cells(2, k).Select
            Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, skipblanks:=False, Transpose:=False
         End If
    
    Next
    Ora io vorrei procedere ad incollare, una volta verificato dove, i dati dell'intervallo in un'altra cartella di lavoro. Mi spiego meglio. Vorrei individuare l'uguaglianza della cella (2,3) ad una delle possibili celle di un altra cartella di lavoro. Ipotizziamo che il file dove inserisco la macro si chiami "File iniziale" e il file dove incollare si chiami "Nuovo". Ho provato a fare così, ma non funziona:

    codice:
          Workbooks.Open Filename:="C:\Documents and Settings\utente\Desktop\Nuovo.xls"
           Workbooks("C:\Documents and Settings\dcurto\Desktop\File iniziale.xlsm").Select
           For k = 10 To 281
                 If Cells(2, 3) = Filename:="C:\Documents and Settings\utente\Desktop\Nuovo.xls.Cells(2, k) Then
                      Range("C3:C26").Select
                      Selection.Copy
                      Workbooks("C:\Documents and Settings\dcurto\Desktop\Nuovo.xlsm").Select
                      Cells(2, k).Select
                      Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, skipblanks:=False, Transpose:=False
                  End If
    I comandi evidenziati in rosso sono quelli errati e che devono essere cambiati. Ma quali sono i comandi giusti?

    Utilizzo VBA 2007.

    Grazie a chi mi aiuta.
    Ultima modifica di andrea.ciao; 13-04-2012 13:04  Motivo: Vba 2007

  2. #2
    andrea.ciao non è in linea Novello
    Post
    9
    Chiaramente "range" è a capo:

    If Cells(2, 3) = Filename:="C:\Documents and Settings\utente\Desktop\Nuovo.xls.Cells(2, k) Then Range("C3:C26").Select
    Selection.Copy

  3. #3
    L'avatar di elisab
    elisab non è in linea Very Important Person
    Post
    1,750
    Ciao andrea
    il tag [articolo] lo inserisci se stai proponendo un Articolo tecnico.

    Entro due ore dall'invio puoi modificare il messaggio premendo il pulsante Modifica messaggio posizionato al di sotto del post.

    Il codice deve essere postato all'interno dei tag [CODE][/CODE], che fanno in modo che il codice stesso mantenga l'indentazione rendendolo più leggibile. Premi il pulsante della barra dell'editor raffigurante il # ed incolla il codice all'interno dei tag. Qui un esempio di uso.

    Dovresti anche indicare la versione di VB che usi.
    Il Crossposting è vietato dalla Netiquette.

    Tutti gli utenti sono invitatati ad indicare nel titolo la versione di VB, Visual Studio o il Framework di compilazione.

    NB: In presenza del SyntaxHighlighter (codice colorato con numeri di riga a lato) prima di copiare il codice eseguire doppio click sulla finestra di codice, altrimenti mancheranno tutti i ritorno a capo.

  4. #4
    andrea.ciao non è in linea Novello
    Post
    9
    Grazie elisab. Non sono molto pratico.

    Utilizzo VBA 2007.

    Grazie in anticipo.

  5. #5
    L'avatar di alextyx
    alextyx non è in linea Moderatore Globale
    Luogo
    Prato
    Post
    2,602

  6. #6
    andrea.ciao non è in linea Novello
    Post
    9
    Si. VBA per Office (Excel).

  7. #7
    L'avatar di elisab
    elisab non è in linea Very Important Person
    Post
    1,750
    Questa sezione è dedicata a VB.Net, abbiamo una sezione specifica per i problemi relativi a Ms Office, Acces e VBA al suo interno c'è il sub-forum per Excel.
    Sposto lì la tua richesta, fai attenzione per il futuro.
    Il Crossposting è vietato dalla Netiquette.

    Tutti gli utenti sono invitatati ad indicare nel titolo la versione di VB, Visual Studio o il Framework di compilazione.

    NB: In presenza del SyntaxHighlighter (codice colorato con numeri di riga a lato) prima di copiare il codice eseguire doppio click sulla finestra di codice, altrimenti mancheranno tutti i ritorno a capo.

  8. #8
    PaoloTalini non è in linea Scribacchino
    Luogo
    Pontedera (PI)
    Post
    862
    andrea:
    Leggi le discussioni precedenti. In questa si discute del metodo copy accodare dati da un fioglio ad un altro in excel.

    Prova scrivendo un codice strutturato in sub e function.
    Progetto:

    1)Apro/attivo il file dove leggerò i dati. (Funzione )
    2)Leggo i dati da copiare. (Funzione )
    3)Chiudo il file

    4)Apro/attivo il file dove scrivere i dati. (Funzione come punto 1))
    5)Scrivo i dati letti(Funzione )

    Leggi il regolamento del forum.
    P. Talini
    __________________________________________________ _______________________________________
    Tutti sanno che una cosa è impossibile da realizzare,
    finché arriva uno sprovveduto che non lo sa e la inventa. (Albert Einstein)

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

    Arrow

    Andrea:
    codice:
    Function ProvaAndrea(k As Integer)
        Dim MiaVar(26) As Variant
        Dim idi As Integer
        For idi = 2 To 26
            MiaVar(idi) = Cells(3, idi)
        Next
        Workbooks.Open Filename:="C:\Documents and Settings\utente\Desktop\Nuovo.xls"
        For k = 10 To 281
            If Cells(2, 3) = MiaVar(2) Then
                For idi = 2 To 26
                    Cells(k, idi) = MiaVar(idi)
                Next
            End If
        Next
    End Function
    Questo è un codice che potrebbe risolvere il tuo problema.
    Dovrai provare il suo funzionamento e adattarlo alle tue esigenze.

    Non usa il metodo copy, scriverà i dati ma non il loro formato.
    Non viene selezionata nessuna cella, rallenta il codice.
    Non definisce la scheda dove leggere o scrivere i dati.

    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)

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

    Question Non funziona

    Ti ringrazio per l'interessamento. Rispondo prima alle tue questioni:

    1) Uso il metodo copy, perchè a me intertessa nello specifico incollare i valori e non i formati.

    2)E' vero, non ho selezionato alcuna scheda, ma l'ho fatto per non appesantire il post. Chiaramente poi vado ad aggiungere nel codice la selezione del foglio di lavoro, dal quale copiare e su cui incollare.

    INFINE:
    Ho provato ad utilizzare il codice che mi hai inviato, ma pur adattandolo non funziona. Il problema secondo me sta nel fatto che non non viene individuata l'uguaglianza tra le celle dei due diversi fogli di lavoro.

    Non capisco come risolvere il problema, considerato che se utilizzo la macro per copiare e incollare nella stessa cartella di lavoro, il tutto funziona alla perfezione.

    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.


    Attendo tue nuove.

+ Rispondi al Thread
Pagina 1 di 3 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