importa fogli



  • importa fogli
    di biss73 (utente non iscritto) data: 24/03/2015 15:13:05

    Salve di nuovo a tutti,
    di nuovo a chiedere aiuto
    ho un file che mi viene estrapolato da un programma di manutenzione ( vedi Allegato) diviso su più fogli
    vorrei importare tutti i fogli di questo file su un unico foglio di un altro file Chiamato riepilogo.
    ho trovato qui una macro che adattata funziona, solo che ha un range ben definito e a me servirebbe un range che racchiude tutte le celle e tutte le colonne attive per ogni foglio.
    in modo da ottenere un unico foglio con il totale dei giorni.
    Nn altra cosa che non riesco a fare e vi chiedo aiuto è:
    quando copio il 1° foglio mi copia anche le colonne A,B,C ( giustamente ) pero quando passo a copiare il foglio 2-3-4-5-6-ecc dovrebbe partire dalla colonna D invece che dalla A ( per non avere la ripetizione sul foglio di riepilogo delle colonne A,B,C )
    ringrazio anticipatamente
    Allego codice e file
    Saluti
     
    Option Explicit
    
    Sub affiancaFiles1()
    
      Dim FD As FileDialog, MyRange As Range, File As Variant, sh As Byte, LC As Integer, _
      W1 As Workbook, W2 As Workbook
      Set MyRange = [a1:gd100]
      Set W1 = ActiveWorkbook
        
        Set FD = Application.FileDialog(msoFileDialogFilePicker)
        
        With FD
            .AllowMultiSelect = True 'posso selezionare più files
            .Show
    
    Application.ScreenUpdating = False 'Conviene spegnere lo schermo
    
                For Each File In .SelectedItems 'Il ciclo esterno scorre tutti i files selezionati
                Workbooks.Open File
                Set W2 = ActiveWorkbook
                    For sh = 1 To Worksheets.Count 'Il ciclo interno scorre tutti i fogli di ogni singolo file
                    ' In ogni foglio prende l'intervallo A3:D20 e lo incolla nel corrispondente foglio del file di riepilogo
                    W2.Worksheets(sh).Range(MyRange.Address).Copy
                        If W1.Worksheets(2).Cells(3, 1).End(xlToRight).Column = Columns.Count Then
                        W1.Activate
                        UC = ActiveSheet.UsedRange.SpecialCells(xlLastCell, xlNumbers).Column
                        W1.Worksheets(2).Cells(3, UC).PasteSpecial xlPasteAll
                        Else
                        LC = W1.Worksheets(2).Cells(3, 1).End(xlToRight).Offset(, 1).Column
                        W1.Worksheets(2).Cells(3, LC).PasteSpecial xlPasteAll
                        End If
                    Next
                W2.Close savechanges:=False
                Next
        End With
    
    Application.ScreenUpdating = True
    
    End Sub
    
    
    



  • di Vecchio Frac data: 25/03/2015 08:27:18

    cit. "solo che ha un range ben definito"
    ---> E nel tuo caso non c'è un range ben definito? è variabile in funzione di scelte dell'operatore? si tratta di celle discontinue? si tratta di range sparpagliati su più fogli?

    cit. "dovrebbe partire dalla colonna D"
    ---> nel codice, quando sh ha valore > 1, deve assegnare a myrange il nuovo riferimento da colonna D in poi. Chiaramente questo aspetto è legato alla risposta precedente.