Excel e gli applicativi Microsoft Office Copia/incolla righe di numero variabile su secondo file

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

    marco_budin
    Partecipante
      2 pts
      Ciao a tutti,
      eccomi con un altra richiesta verso voi esperti! Ho un file, "copiafile1", dove nella cartella "stroke" scansiono i prodotti. Tutti i prodotti scansionati, vengono incollati dalla riga 10 del "Foglio1". Viene inserita una riga e incollato il prodotto.
      A fine della mia registrazione, avrò una lista di prodotti (in questo esempio 6), ma potrebbero essere anche 10, o 100, o 9 righe.
      Ho inserito nella cella B6 una somma, che conta quante righe/prodotti ci sono.
       
      Questi prodotti, partendo da "stroke" io con una macro "Copia", copio quelle righe, e le incollo su un altro file "Copiafile2.xls". Una volta copiate, il file secondo file viene salvato, mentre quello originale lo chiudo senza salvare (così tornerà vergine per le registrazioni successive). Chiaramente quando incollo nuovi malori, quelli incollati precedentemente, scendono e non vengono sovrascritti. Di seguito avete il codice che ho creato:
       
      Public Sub copia()
      
      'dichiaro le variabili
          Dim wk1 As Workbook
          Dim wk2 As Workbook
          Dim sh1 As Worksheet
          Dim sh2 As Worksheet
          Dim miaDir
      
      'gestione errori
      On Error GoTo RigaErrore
      
          Application.ScreenUpdating = False
      
          'metto i riferimenti ai files
          miaDir = "O:\Neuroradiologia\Sala Angio\Altro\prove"
          Set wk1 = ThisWorkbook
          Set wk2 = Workbooks.Open(miaDir & "/" & "Copiafile2.xls")
          'metto i riferimenti ai fogli
          Set sh1 = wk1.Worksheets("Foglio1")
          Set sh2 = wk2.Worksheets("Foglio2")
      
          With sh1
              'copio i dati da un file all'altro
              sh1.Rows("10:15").Copy
              sh2.Rows("10:10").Insert Shift:=xlDown
      
          End With
          Application.CutCopyMode = False
      
          'salvo le modifiche al file FileDue.xls
          wk2.Save
          'chiudo il file FileDue.xls
          wk2.Close
      
          Application.ScreenUpdating = True
      
      'riga sempre eseguita
      RigaChiusura:
          'Set a Nothing delle variabili oggetto
          Set sh2 = Nothing
          Set sh1 = Nothing
          Set wk1 = Nothing
          Set wk2 = Nothing
          Exit Sub
      
      'in caso di errore
      RigaErrore:
          MsgBox Err.Number & vbNewLine & Err.Description
          Resume RigaChiusura
      
      
      End Sub
       
      Il problema nasce, adesso: voglio rendere variabile il numero di righe in "Foglio1", cioè se sono stati scansionati 6 prodotti copia e incolla 6 prodotti.... se però sono 10, deve copiare 10 e incollare 10... o se sono 100... devono essere 100...
      Come posso modificare la parte scritta che è fissa... renderla variabile in base a quello che è scritto in B6 (numero di righe):
       
      With sh1
              'copio i dati da un file all'altro
              sh1.Rows("10:15").Copy
              sh2.Rows("10:10").Insert Shift:=xlDown
          End With
          Application.CutCopyMode = False
       
      Mi scuso, per complicarvi la vita... ma spero che riuscite a trovare una soluzione e come sempre vi ringrazio anticipatamente.
       
      saluti
      Marco
      Allegati:
      You must be logged in to view attached files.
      #3986 Score: 0 | Risposta

      patel
      Moderatore
        51 pts
        devi calcolare l'ultima riga occupata con
        LastRow = Cells(Rows.Count, "A").End(xlUp).Row
        e quindi inserire questo nel range da copiare
        #3993 Score: 0 | Risposta

        marco_budin
        Partecipante
          2 pts
          ciao Patel,
          scusami la mia ignoranza... quindi devo inserire il tuo codice in questo modo?
          dove l'inserisco nel codice completo? così? ti ringrazio per il tuo prezioso aiuto!
          With sh1
          'copio i dati da un file all'altro'
          sh1.Rows("10:15").Copy
          LastRow = Cells(Rows.Count, “A”).End(xlUp).Row
          sh2.Rows("10:10").Insert Shift:=xlDown
           
          #3996 Score: 0 | Risposta

          marco_budin
          Partecipante
            2 pts
            ciao Patel,
            scusami la mia ignoranza… quindi devo inserire il tuo codice in questo modo?
            dove l’inserisco nel codice completo? così?
             
            With sh1
            sh1.Rows("10:15").Copy
            LastRow = Cells(Rows.Count, “A”).End(xlUp).Row
            sh2.Rows("10:10").Insert Shift:=xlDown
             
            quindi non serve avere nel primo file (Copiafile1), nel foglio1 in B6 un conteggio delle righe? conta direttamente la linea A? dovrà partire a contare le righe solo dalla 10 in giù. sopra no.
            ringrazio davvero e vi auguro una buona giornata
            #4002 Score: 0 | Risposta

            marco_budin
            Partecipante
              2 pts
              buona sera a tutti,
              volevo comunicarvi che ho risolto in questo modo, più semplice. Per chi fosse interessato, lascio il codice:
              With sh1
                      'copio i dati da un file all'altro
                      variabile = sh1.Range("b6")
                      sh1.Rows("10:" & variabile).Copy
                      sh2.Rows("14:14").Insert Shift:=xlDown
                  End With
              ringrazio tutti per l'aiuto
              alla prossima
              Marco
              #4014 Score: 0 | Risposta

              patel
              Moderatore
                51 pts
                il with non ti serve, basta fare così
                'copio i dati da un file all'altro
                LastRow = Sh1.Cells(Rows.Count, “A”).End(xlUp).Row
                sh1.Rows("10:" &LastRow).Copy
                sh2.Rows("14:14").Insert Shift:=xlDown
                #4021 Score: 0 | Risposta

                marco_budin
                Partecipante
                  2 pts
                  grande Patel!
                  grazie mille dell'aiuto.
                  alla prossima
                  Marco
                Login Registrati
                Stai vedendo 7 articoli - dal 1 a 7 (di 7 totali)
                Rispondi a: Copia/incolla righe di numero variabile su secondo file
                Gli allegati sono permessi solo ad utenti REGISTRATI
                Le tue informazioni: