Macro excel copia incolla dati da più fogli in un nuovo file excel

Anonimo
2013-02-05T07:43:41+00:00

Ciao a tutti,

anticipo che non sono per niente afferrato in materia macro. Praticamente ho un file con più fogli (stesso numero di colonne, con stessa denominazione); vorrei che, ogniqualvolta vengano inseriti i dati in ogni singolo foglio gli stessi vengano riportati e riepilogati in un nuovo file con la stessa struttura.

Esempio:

Foglio1

colonnaA    colonnaB colonnaC

     A                B            C

     D                E            F

Foglio2

colonnaA   colonnaB  colonnaC

     G              H              I

     J               K              L

Nuovo file creato con macro

colonnaA   colonnaB  colonnaC

      A                B            C

      D                E            F

      G              H              I

      J               K              L

Il tutto mantenendo gli stessi formati dei dati presenti nei vari fogli (alcune colonne ci sono date, altre valori, altre solo testo)

Grazie!

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2013-02-05T14:06:30+00:00

Ciao FabioPZ,

se le intestazioni di colonna sono sempre e solo, in tutti i fogli, nella riga 1 allora questa potrebbe fare al caso tuo.

Da incollare nel modulo Visual Basic "ThisWorkbook".

' ThisWorkbook - Workbook

'

Option Explicit

Private Function GetWbkByName(ByVal Name As String) As Excel.Workbook

    On Error Resume Next

    Set GetWbkByName = Application.Workbooks(Name)

End Function

Private Sub Workbook_Open()

'

' Cambiare in base alle proprie impostazioni

'

Const cstrPath = "" ' Cambiare se il percorso è diverso da quello di destinazione

Const cstrFilename = "Cartella da cui copiare.xls"

Const cstrShDest = "Foglio1" ' Nome del foglio di destinazione

Dim wbk         As Excel.Workbook

Dim sh          As Excel.Worksheet

Dim shOut       As Excel.Worksheet

Dim rng         As Excel.Range

Dim strPath     As String

Dim strFilename As String

Dim lngOffset   As Long

Dim blnClose    As Boolean

    If MsgBox("Vuoi aggiornare i dati?" _

            , vbQuestion + vbYesNo _

            ) <> vbYes Then

      Exit Sub

    End If

    If Len(strPath) = 0 Then strPath = Me.Path

    If Right$(strPath, 1) <> "" Then strPath = strPath & ""

    strFilename = cstrFilename

    Set wbk = GetWbkByName(strFilename)

    If wbk Is Nothing Then

      blnClose = True

      Set wbk = Application.Workbooks.Open(strPath & strFilename)

    End If

    Set shOut = Me.Worksheets(cstrShDest)

    With shOut

      .Cells.Clear

      Set rng = .Cells(1, 1)

    End With

    For Each sh In wbk.Worksheets

      With sh.UsedRange

        With .Offset(lngOffset).Resize(.Rows.Count - lngOffset)

          .Copy rng

          Set rng = rng.Offset(.Rows.Count)

        End With

      End With

      If lngOffset = 0 Then lngOffset = 1

    Next

    If blnClose Then wbk.Close False

    Set rng = Nothing

    Set shOut = Nothing

    Set sh = Nothing

    Set wbk = Nothing

End Sub

La risposta è stata utile?

0 commenti Nessun commento

9 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2013-02-05T12:39:26+00:00

    Vorrei fare proprio come dici te. Il riassuntivo sarà solo in consultazione.

    Quindi la soluzione apri flie riassuntivo-->Vuoi aggiornare i dati? Sì/No sarebbe l'ideale!

    Un altro problemino riguarda una colonna dove nei vari fogli dovrò inserire dei collegamenti ipertestuali. E' possibile nel riassuntivo riportare gli stessi collegamenti in quella colonna?

    Grazie 1000!

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2013-02-05T10:04:57+00:00

    Perdona FabioPZ ma c'è ancora una cosa importante da decidere...

    Avrai notato che io ho scritto "ricreare da zero il foglio riassuntivo". Così si potrebbe proprio, come richiedi nell'ultimo post, ricreare da zero ogni mattina il file: lo apri, magari un messaggio ti chiede conferma (tipo: "Vuoi aggiornare i dati? Sì/No") e tutto procede.

    Potrebbe essere che tu faccia delle immissioni o integrazioni in questo foglio riassuntivo? Se è così col ricreare da zero quelle del giorno prima verrebbero perse. Oppure devi soltanto consultare i dati?

    Penso che stabilito questo si possa procedere.

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2013-02-05T09:28:35+00:00

    Grazie Maurizio.

    Non necessariamente verranno compilato tutti i dati presenti nella riga (come il tuo esempio).

    Potrebbe essere che vengano compilati tutti oppure no.

    Mi servirebbe che ogniqualvolta si apra il file riassuntivo vengano caricati i dati presenti nei vari fogli del primo file. Tendenzialmente i dati vengono inseriti la sera e io dovrei, una volta che apro il riassuntivo, ritrovarmeli lì la mattina.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2013-02-05T08:40:08+00:00

    Ciao FabioPZ,

    problema di non eccessiva complessità quello che ci proponi se non fosse per quel "ogniqualvolta vengano inseriti i dati".

    Si tratta di capire cosa intendi perché, per esempio, se io nel Foglio1, nella cella sotto quella che contiene il valore "D", immetto il valore "M" ho inserito un dato, secondo te?

    Oppure intendi che l'inserimento sia completato dopo che sono stati inseriti tutti i valori della riga per ciascuna colonna ("colonnaA", "colonnaB", "colonnaC")? 

    In tal caso non potrebbero esserci situazioni in cui uno di questi tre valori non debba essere immesso? Per esempio:

    • colonnaA    colonnaB colonnaC

         A                B            C

         D                E            F

         M                             N

    così come potremmo sapere se la riga è stata completata o no?

    E se vengono modificati, per correzione o aggiornamento, dati già immessi cosa deve succedere al file che li unisce tutti?

    Un metodo abbastanza ragionevole potrebbe essere quello di ricreare da zero il foglio riassuntivo ogniqualvolta che si salva, o si chiude, il file che contiene i fogli origine dei dati. Che ne dici?

    La risposta è stata utile?

    0 commenti Nessun commento