aiuto con vba per excel macro per caricare più file excel su un unico foglio

Anonimo
2018-10-18T17:13:04+00:00

salve avrei bisogno di supporto per perfezionare la mia macro per excel.

avevo bisogno che un file excel copiasse i dati da una serie di file diversi per inserirli in un unico foglio di excel senza ripetizioni e inserendo nell'ultima colonna il nome del file dal quale proveniva.

di seguito vi riporto il codice creato finora.

esegue quasi tutto ma mi riporta solo 1 volta il nome del file e non verifica se i dati sono già presenti nel foglio quindi crea ripetizioni.

potete aiutarmi a perfezionare questa macro?

grazie infinite

Enzo

Public Sub m()

    'dichiarazioni variabili

    Dim wkMe As Workbook

    Dim wk As Workbook

    Dim shMe As Worksheet

    Dim sh As Worksheet

    Dim sPath As String

    Dim sFileName As String

    Dim lRiga As Long

    Dim lColonna As Long

    Dim rng As Range

    'metto un riferimento a questo Workbook

    'e al Foglio Storico

    Set wkMe = ThisWorkbook

    Set shMe = wkMe.Worksheets("Storico")

    'metto nella variabile il percorso di questo file

    sPath = wkMe.Path & ""

    'impedisco lo *sfarfallio* del monitor

    Application.ScreenUpdating = False

    'ciclo TUTTI i file della Directory

    sFileName = Dir(sPath & "*.xls*")

    Do While (Len(sFileName) > 0)

        On Error Resume Next

        'se il nome del file è diverso da quello che contiene il codice

        If sFileName <> wkMe.Name Then

            'metto un riferimento e apro il file

            Set wk = Workbooks.Open(Filename:=sPath _

                & sFileName)

            'metto un riferimento al Foglio1

            Set sh = wk.Worksheets("Foglio1")

            'metto un riferimento al Range del Foglio1 che contiene i dati

            Set rng = sh.Range("A1").CurrentRegion

            'copio i dati ad eccezione della prima riga (di solito è l'intestazione)

            rng.Offset(1, 0).Resize(rng.Rows.Count, rng.Columns.Count).Copy

            'trovo la prima riga vuota della colonna A del Foglio Storico

            lRiga = shMe.Range("A" & Rows.Count).End(xlUp).Row + 1

            'incollo i dati nel foglio Storico

            shMe.Range("A" & lRiga).PasteSpecial

            shMe.Range("F" & lRiga).Value = sFileName

            Application.CutCopyMode = False

            'chiudo il file dal quale ho prelevato i dati

             wk.Close

            'Set a Nothing delle variabili oggetto

            Set sh = Nothing

            Set wk = Nothing

        End If

        sFileName = Dir

    Loop

    'visualizzo il risultato della macro

    Application.ScreenUpdating = True

    'Set a Nothing delle variabili oggetto

    Set shMe = Nothing

    Set wkMe = Nothing

End Sub

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

1 risposta

Ordina per: Più utili
  1. Anonimo
    2018-10-20T12:34:18+00:00

    Ciao Vincenzo, 

    ti consiglio di scrivere aquesta community. Considera che Windows office 2010 non e' piu' supportato da Microsoft, ma comunque ci sono volontari che possono aiutarti a risolvere.

    FLavio

    La risposta è stata utile?

    0 commenti Nessun commento