Excel e gli applicativi Microsoft Office Macro per copiare dati da un file ad un altro

Login Registrati
Stai vedendo 4 articoli - dal 1 a 4 (di 4 totali)
  • Autore
    Articoli
  • #625 Score: 0 | Risposta

    AlbyN
      Ciao a tutti,
      Avrei bisogno di una mano siccome sono un novizio con vba.
      Dovrei incollare dei dati da un file ad un altro.
      Quello da cui copiare: hai i dati che son disposti dalla colonna C a quella J per righe successive.
      Quello in cui copiarli: sono ordinati in maniera successiva sulla stssa riga. (es. copio C4:J4 nell'altro file in B6022:I6022, poi C5:J5 -> J6022:Q6022)
      Il problema è che nel file dove vanno incollati devono occupare non l'ultima riga ma quella successiva vuota.
      I dati sono a valore quindi non vi sono problemi di riferimenti dovuti a formule.
      Grazie per la disponibilità
      #629 Score: 0 | Risposta

      Luca73
      Partecipante
        58 pts
        Ciao
        Hai Provato a scrivere qualcosa oppure niente?
        Nel caso manda quello che hai scritto e poi cerchiamo di correggerlo.
        Per scrivere non nell'ultima riga ma quella successiva vuota.
        ti consiglio di studiare
        Rows (che ti dà il numero di righe)
        end (da usare con xlup partendo dall'ultima cella del foglio)
        offset
        Ciao
        Luca
        #633 Score: 0 | Risposta

        AlbyN
          Ciao,
          grazie della risposta.
          Io ho provato a scrivere questo partendo da una macro registrata.
          Tuttavia dopo la prima riga copiata correttamente, dalla seconda vi si presenta un errore

          Sub TransferData()
          'transfer stuff from this workbook to workbook 2

          Windows("Daily.csv").Activate
          Range("C4:J4").Select
          Selection.Copy
          Windows("Govies DB.xlsm").Activate
          Range("B2").Select
          Selection.End(xlDown).Select
          ActiveSheet.PasteFor i = 1 To 25

          Windows("Daily.csv").Activate
          ActiveCell.Offset(i, 0).Range("C4:J4").Select
          Selection.Copy
          Windows("Govies DB.xlsm").Activate
          Selection.End(xlToRight).Select
          ActiveCell.Offset(0, 1).Range("B2").Select

          Next i

          End Sub
          • Questa risposta è stata modificata 7 anni, 8 mesi fa da  albatros54.
          #645 Score: 0 | Risposta

          Luca73
          Partecipante
            58 pts
            Ciao
            1) non usare windows(che è la finestra di visualizzazione), usa workbook (che è la cartella excel ovvero il file).
            2) non serve selezionare
            invece di
            Windows("Daily.csv").Activate
            Range("C4:J4").Select
            Selection.Copy
            usa
            Workbooks("Daily.csv").Sheets(1).Range("C4:J4").Copy
            3) nella riga
            ActiveCell.Offset(i, 0).Range("C4:J4").Select
            cosa volevi fare?
            io penso che tu volessi selezionare il Range C5:J5 ovvero la riga sotto C4:J4
            nel caso
            Workbooks("Daily.csv").Sheets(1).Range("C4:J4").Offset(i, 0).TuaAzione
            4)
            Windows("Govies DB.xlsm").Activate
            Selection.End(xlToRight).Select
            Se usi End(xlToRight) Excel si posiziona sull'ultima cella occupata. ricordati di aggiungere un offset di una colonna .offset(0,1) altrimenti ti sovrascrive l'ultima cella
            5) attenzione ad usare Activecell con un offset variabile e un select al secondo giro la cella attiva è gia nella riga inferiore e ti sposti di ulteriore di due righe in sotto.
            6) io di solito i programmi li scrivo usando i select per fare debug e poi li tolgo
            Workbooks("Daily.csv").Sheets(1).Range("C4:J4").Offset(i, 0).select
            Workbooks("Daily.csv").Sheets(1).Range("C4:J4").Offset(i, 0).copy
            in modo da vedere se ciò che ho previsto copiare lo seleziona correttamente (ma non faccio riferimento all cella selezionata).
            7) nella seconda parte manca il paste.
            8) oltre a copiare (se ti venisse comodo potresti anche assegnare un valore
            Con istruzioni del tipo:
            DB.xlsm").Sheets("pippo").Range("B2").end(xldown).offset(i,j).Value=Workbooks("Daily.csv").Sheets(1).Range("C4").
            Se la correlazione tra le celle di origine e quelle di arrivo è semplice può convenire.
            Prova a modificare e dimmi cosa succede.
            Ciao
            Luca
          Login Registrati
          Stai vedendo 4 articoli - dal 1 a 4 (di 4 totali)
          Rispondi a: Macro per copiare dati da un file ad un altro
          Gli allegati sono permessi solo ad utenti REGISTRATI
          Le tue informazioni: