Risultati da 1 a 22 di 22

Discussione: macro con funzione concatena



  1. #1
    L'avatar di ste75v
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    borgomanero
    Messaggi
    105
    Versione Office
    2013
    Likes ricevuti
    2
    Likes dati
    3

    macro con funzione concatena

    Buonasera , ho bisogno ancora del vostro aiuto...
    In una cartella "SCHEDE" ho dentro molti file che si chiamano "scheda n°XXX" ( sono circa 300 file).
    in quasi tutti i file "scheda n°xxx nelle celle comprese tra B50 e B 60 ho dei valori (testo) .

    A volte sono presenti 3-4 valori in questo range altre volte 2 altre volte nemmeno uno.
    Se non dovesse esserci alcun valore presente nel range B50:B60 non deve inserire nulla e andare al file successivo.

    Avrei la necessità di andare a leggere questi valori e se c'è scritto qualcosa concatenare il tutto ed inserire il risultato nel file "RIEPILOGO" a partire dalla cella R9 .
    La cella R9 corrisponde al file "scheda n°1" , la cella R10 al file "scheda n°2" e così via...

    Nel file "RIEPILOGO" nella colonna M a partire dalla riga 9 ho dentro il n° relativo al file "scheda n°XXX"

    Come si può fare????

  2. #2

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    53
    Messaggi
    7149
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2064
    Likes dati
    1300

    Re: macro con funzione concatena

    Ciao,
    allega un file excel con un breve esempio.
    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!

  3. #3
    L'avatar di ste75v
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    borgomanero
    Messaggi
    105
    Versione Office
    2013
    Likes ricevuti
    2
    Likes dati
    3

    Re: macro con funzione concatena

    ecco un esempio
    File Allegati File Allegati

  4. #4
    L'avatar di Raffaele_53
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Binasco
    Età
    64
    Messaggi
    506
    Versione Office
    2007
    Likes ricevuti
    85
    Likes dati
    7

    Re: macro con funzione concatena

    Scusami, ognuno dice i Suoi problemi, però alla fine non si capisce bene.

    >>>In una cartella "SCHEDE" ho dentro molti file
    Intendi una directory con molti file???

    >>>che si chiamano "scheda n°XXX"
    Pertanto i nomi dei file sono simili aa scheda n°XXX.xlsx (ed ognuno file è simile)

    Ora,esempio entro in tutti i file, analizzo (solo il foglio1 od ancora altri)
    Ricopio il tutto in riepilogo (mà non capisco il concatena)

    Puoi descrivere cosa intendi per concatena?
    Ps dei tre alegati quale devo capire?

  5. #5
    L'avatar di ste75v
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    borgomanero
    Messaggi
    105
    Versione Office
    2013
    Likes ricevuti
    2
    Likes dati
    3

    Re: macro con funzione concatena

    Citazione Originariamente Scritto da Raffaele_53 Visualizza Messaggio
    Scusami, ognuno dice i Suoi problemi, però alla fine non si capisce bene.

    >>>In una cartella "SCHEDE" ho dentro molti file
    Intendi una directory con molti file???

    >>>che si chiamano "scheda n°XXX"
    Pertanto i nomi dei file sono simili aa scheda n°XXX.xlsx (ed ognuno file è simile)

    Ora,esempio entro in tutti i file, analizzo (solo il foglio1 od ancora altri)
    Ricopio il tutto in riepilogo (mà non capisco il concatena)

    Puoi descrivere cosa intendi per concatena?
    Ps dei tre alegati quale devo capire?


    Buonasera Raffaele , cercherò di spiegare meglio:
    questo è il percorso della cartella SCHEDE C:\SCHEDE
    all'interno di questa cartella ci sono numerosi file tutti con un foglio di lavoro (foglio 1); questi file si chiamano scheda n°xxx (esempio percorso per la scheda n°1 C:\SCHEDE\scheda n°1.xlsx).
    Tutti i file "scheda n°xxx" hanno la stessa impaginazione .
    io vorrei che i dati che sono incolonnati nel range B50:B60 di ogni singolo file "scheda n°xxx" vengano messi all'interno del file "RIEPILOGO" nella riga corrispondente al n° del file scheda ( come illustrato nel file "RIEPILOGO") con il testo a capo alla fine di ogni valore presente nel range B50B60.
    Spero sia un po piu chiaro.
    riallego alche il file RIEPILOGO con qualche indicazione in più

    PS
    Grazie per l'interessamento
    File Allegati File Allegati

  6. #6
    L'avatar di Raffaele_53
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Binasco
    Età
    64
    Messaggi
    506
    Versione Office
    2007
    Likes ricevuti
    85
    Likes dati
    7

    Re: macro con funzione concatena

    >>>io vorrei che i dati che sono incolonnati nel range B50:B60
    Sarà come dici, mà in RIEPILOGO.xlsx range B50:B60, non vedo nulla

    Se spieghi il tutto, qualcuno trova la risposta
    Ps per i 300 file, ho capito. Purtroppo non ho capito il "TUO" concatena

    Pps mi sembra simile al PDF

  7. #7
    L'avatar di GiuseppeMN
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Mantova
    Messaggi
    864
    Versione Office
    2000 - 2013
    Likes ricevuti
    285
    Likes dati
    160

    Re: macro con funzione concatena

    Buona giornata, ste75v;
    consentimi un saluto a @ Raffaele_53 (buona serata, Raffaele)
    Nei Tuoi File.
    - scheda n° 1. xlsx
    - scheda n° 2. xlsx
    i Dati da concatenare non sono nel Range B50:B60.
    Per questo motivo ho preferito evitare di definire un Range ben preciso; voglio dire, ho previsto di concatenare i Dati che vanno da B1 all'ultima Riga valida della Colonna "B".

    Ciò premesso potresti provare questo Codice:
    Codice: 
    Option Explicit
    
    Sub Concatena()
    Dim objFSO As Object
    Dim objFolder As Object
    Dim objFile As Object
    Dim Ur As Long, UrX As Long, x As Long
    Dim NomeFile As String
    Dim s As String
    
    On Error GoTo 10
    Application.ScreenUpdating = False
        Ur = Cells(Rows.Count, 1).End(xlUp).Row
            If Ur < 9 Then Ur = 9
        Range(Cells(2, 18), Cells(Ur, 18)).ClearContents
            
        Set objFSO = CreateObject("Scripting.FileSystemObject")
        Set objFolder = objFSO.GetFolder("C:\Schede\")
            Ur = Cells(Rows.Count, 4).End(xlUp).Row + 8
            For Each objFile In objFolder.Files
                Workbooks.Open Filename:=objFile
                    UrX = Cells(Rows.Count, 2).End(xlUp).Row
                        If UrX > 1 Then
                        s = ""
                        For x = 1 To UrX
                            If Cells(x, 2) <> "" Then s = s & Cells(x, 2) & Chr(10)
                        Next x
                ActiveWindow.Close
                        s = Left(s, Len(s) - 1)
                    Cells(Ur, 18) = s
                        Ur = Ur + 1
                        Else
                            ActiveWindow.Close
                                Ur = Ur + 1
                        End If
            Next objFile
    10:
    Application.ScreenUpdating = True
    End Sub
    Questa è solo una possibile soluzione; considera che un risultato analogo si potrebbe ottenere senza necessariamente aprire/chiudere i File "scheda n°xxx" velocizzando il Processo.



    A disposizione.

    Buon Lavoro e buona serata.

    Giuseppe
    Windows XP Excel 2000 - Windows 10 Excel 2013

  8. #8
    L'avatar di ste75v
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    borgomanero
    Messaggi
    105
    Versione Office
    2013
    Likes ricevuti
    2
    Likes dati
    3

    Re: macro con funzione concatena

    Buongiorno Raffaele ,
    Il range B50:B60 si trova nei file scheda n°xxx (nei file scheda di esempio questi valori li ho messi in B5:B9).
    Per Concatena intendo :
    se nei file scheda ho un testo in ogni cella range B50:B60 avrò quindi 11 celle con testo inserito
    io vorrei copiare questi valori e inserirli in un unica cella nel file RIEPILOGO (a partire dalla cella R9)mettendo ogni valore con il testoa capo come illustrato come illustrato nel file riepilogo.


    Per Giuseppe,
    ora provo a vedere se riesco a far girare la macro poi ti faccio sapere

    ----------Post unito in automatico----------

    Buongiorno Giuseppe ,
    dove posso inserire il range B50:B60??
    Come si può fare per evitare di aprire e chiudere i file scheda??

    grazie in anticipo

  9. #9
    L'avatar di GiuseppeMN
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Mantova
    Messaggi
    864
    Versione Office
    2000 - 2013
    Likes ricevuti
    285
    Likes dati
    160

    Re: macro con funzione concatena

    Buona gioranata, ste75v;

    Citazione Originariamente Scritto da ste75v Visualizza Messaggio
    dove posso inserire il range B50:B60?
    Dovresti sosituire:
    Codice: 
    For x = 1 To UrX
    con:
    Codice: 
    For x = 50 To 60
    A questo punto:
    Codice: 
    UrX = Cells(Rows.Count, 2).End(xlUp).Row
    non ha più ragione di esistere.

    Citazione Originariamente Scritto da ste75v Visualizza Messaggio
    Come si può fare per evitare di aprire e chiudere i file scheda?
    Vedo di costruire un Codice adeguato alla Tua Richiesta; lasciami solo un pò di tempo.

    Nel frattempo, potresti verificare se il Codice proposto in #07 soddisfa le Tue necessità.


    A disposizione.

    Buon Lavoro, a presto

    Giuseppe
    Windows XP Excel 2000 - Windows 10 Excel 2013

  10. #10
    L'avatar di ste75v
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    borgomanero
    Messaggi
    105
    Versione Office
    2013
    Likes ricevuti
    2
    Likes dati
    3

    Re: macro con funzione concatena

    Ciao Giuseppe ,
    se tolgo dalla macro
    UrX = Cells(Rows.Count, 2).End(xlUp).Row

    Non fa più nulla.
    Lasciando questa stringa fa tutto a dovere

    Grazie
    buon lavoro
    Stefano

  11. #11
    L'avatar di GiuseppeMN
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Mantova
    Messaggi
    864
    Versione Office
    2000 - 2013
    Likes ricevuti
    285
    Likes dati
    160

    Re: macro con funzione concatena

    Buona giornata, Stefano;

    Citazione Originariamente Scritto da ste75v Visualizza Messaggio
    Ciao Giuseppe ,
    se tolgo dalla macro
    UrX = Cells(Rows.Count, 2).End(xlUp).Row

    Non fa più nulla.
    Lasciando questa stringa fa tutto a dovere

    Grazie
    buon lavoro
    Stefano

    togliendo:
    Codice: 
    UrX = Cells(Rows.Count, 2).End(xlUp).Row
    contestualmente, devi modificare il Ciclo For x come indicato in Risposta #9

    Ad ogni buo conto, visto che, mi sembra di capire che il risultato potrebbe essere corretto, proverei con questo Codice:
    Codice: 
    Option Explicit
    
    Sub CreaDatabase_File_chiuso()
    Dim objFSO As Object
    Dim objFolder As Object
    Dim objFile As Object
    Dim ur As Long
    Dim nomefile As String, s As String, S2 As String
    Dim x As Byte
    Application.ScreenUpdating = False
    
        Set objFSO = CreateObject("Scripting.FileSystemObject")
        Set objFolder = objFSO.GetFolder("C:\Schede\")
            ur = 9
            For Each objFile In objFolder.Files
                nomefile = objFile.Name
                S2 = ""
                For x = 50 To 60
                    s = "'" & objFolder & "\[" & nomefile & "]Foglio1'!R" & x & "C2"
                    If ExecuteExcel4Macro(s) <> "0" Then
                    S2 = S2 & ExecuteExcel4Macro(s) & Chr(10)
                    End If
                Next x
                If S2 <> "" Then
                    S2 = Left(S2, Len(S2) - 1)
                    Cells(ur, 18).Value = S2
                        ur = ur + 1
                    Else
                    ur = ur + 1
                End If
            Next objFile
    Application.ScreenUpdating = True
    End Sub
    Preciso che per i miei Test ho adeguato il Ciclo For x Next ai Tuoi File utilizzando il Ciclo:
    Codice: 
    For x = 5 To 9


    A disposizione

    Buon Lavoro e buona serata.

    Giuseppe
    Windows XP Excel 2000 - Windows 10 Excel 2013

  12. #12
    L'avatar di ste75v
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    borgomanero
    Messaggi
    105
    Versione Office
    2013
    Likes ricevuti
    2
    Likes dati
    3

    Re: macro con funzione concatena

    buongiorno Giuseppe ,
    Lanciando l'ultima macro che hai postato mi da questo errore:
    run-time 13

    e mi si evidenzia in giallo il seguente testo:
    If ExecuteExcel4Macro(s) <> "0" Then



    PS.
    con la macro postata in #7 e le correzioni #9 ho visto che se per esempio nel file scheda n°3 non trova nessun valore nel range B50:B60 , non mi prosegue a inserire i dati presenti negli altri file scheda n°xxx


    Ho notato un altra cosa:
    se io per un qualsiasi motivo devo invertire la sequenza della numerazione dei file "scheda n°" sul "RIEPILOGO" ,come fa a mettermi i dati corrispondenti nella riga esatta?
    la macro non dovrebbe puntare nella colonna M del "RIEPILOGO" che partire che a dalla riga 9 ho dentro il n° relativo al file "scheda n°XXX"?????

  13. #13
    L'avatar di GiuseppeMN
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Mantova
    Messaggi
    864
    Versione Office
    2000 - 2013
    Likes ricevuti
    285
    Likes dati
    160

    Re: macro con funzione concatena

    Buona giornata, Stefano;

    Citazione Originariamente Scritto da ste75v Visualizza Messaggio
    buongiorno Giuseppe ,
    Lanciando l'ultima macro che hai postato mi da questo errore:
    run-time 13

    e mi si evidenzia in giallo il seguente testo:
    If ExecuteExcel4Macro(s) <> "0" Then
    L'unica cosa a cui posso pensare è che uno dei File sia aperto durante l'esecuzione del Codice.

    Considerando che il File con il quale ho eseguito i miei test è stato sviluppato con Excel 2013, allego il File.

    Nel Codice VBA, come in precedenza, ho utilizzato il Ciclo For x = 5 to 9, nel Tuo File dovrai modificarlo in For x = 50 to 60

    PS.
    con la macro postata in #7 e le correzioni #9 ho visto che se per esempio nel file scheda n°3 non trova nessun valore nel range B50:B60 , non mi prosegue a inserire i dati presenti negli altri file scheda n°xxx
    Per capire cosa succede dovrei modificare i Tuoi File portando i Record alle Righe 50:60; posso provare ma non oggi.


    A disposizione.

    Giuseppe
    File Allegati File Allegati
    Windows XP Excel 2000 - Windows 10 Excel 2013

  14. #14
    L'avatar di ste75v
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    borgomanero
    Messaggi
    105
    Versione Office
    2013
    Likes ricevuti
    2
    Likes dati
    3

    Re: macro con funzione concatena

    Giuseppe ti ringrazio per l'impegno ed il tempo che mi dedichi...

    Ho aggiunto dei commenti al mio post #12 che secondo me è necessario tenere in considerazione

    Ciao
    Stefano

  15. #15
    L'avatar di Raffaele_53
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Binasco
    Età
    64
    Messaggi
    506
    Versione Office
    2007
    Likes ricevuti
    85
    Likes dati
    7

    Re: macro con funzione concatena

    Ciao GiuseppeMN
    Spero di trovarci (noi tre) qualche volta al mare, con la panza al sole.
    Ottima l'idea dell'ExecuteExcel4Macro
    Io sono più a terra, uso ancora aprire i file

    Se ho capito bene, prova questo codice
    Codice: 
    Option Explicit
    Sub concatena()
        Dim Percorso1 As String, NomeFile As String, Msg As String, Rg, Y, Tot
        Percorso1 = ThisWorkbook.Path
        Rg = 9
        Application.ScreenUpdating = False
        NomeFile = Dir(Percorso1 & "\" & "*.xls*")
        Do While NomeFile <> ""
            If NomeFile <> ThisWorkbook.Name Then
                Msg = ""
                    Workbooks.Open (Percorso1 & "\" & NomeFile)
                        For Y = 50 To 60 'B50:B60
                            Msg = Sheets(1).Cells(Y, 2) & "," 'ho usato la virgola non accappo, comunque se vuoi sostituisci con >>>& Chr(10)
                        Next Y
                    Workbooks(NomeFile).Close False
                    Sheets("foglio1").Cells(Rg, 1) = NomeFile
                    Sheets("foglio1").Cells(Rg, 13) = Tot = Tot + 1
                    Sheets("foglio1").Cells(Rg, 18) = Msg
                    Rg = Rg + 1
            End If
            NomeFile = Dir
        Loop
        Application.ScreenUpdating = True
        MsgBox "Finito"
    End Sub
    Ps da mettere nella cartella, insieme hai 300 file

  16. #16
    L'avatar di ste75v
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    borgomanero
    Messaggi
    105
    Versione Office
    2013
    Likes ricevuti
    2
    Likes dati
    3

    Re: macro con funzione concatena

    Citazione Originariamente Scritto da Raffaele_53 Visualizza Messaggio
    Ciao GiuseppeMN
    Spero di trovarci (noi tre) qualche volta al mare, con la panza al sole.
    Ottima l'idea dell'ExecuteExcel4Macro
    Io sono più a terra, uso ancora aprire i file

    Se ho capito bene, prova questo codice
    Codice: 
    Option Explicit
    Sub concatena()
        Dim Percorso1 As String, NomeFile As String, Msg As String, Rg, Y, Tot
        Percorso1 = ThisWorkbook.Path
        Rg = 9
        Application.ScreenUpdating = False
        NomeFile = Dir(Percorso1 & "\" & "*.xls*")
        Do While NomeFile <> ""
            If NomeFile <> ThisWorkbook.Name Then
                Msg = ""
                    Workbooks.Open (Percorso1 & "\" & NomeFile)
                        For Y = 50 To 60 'B50:B60
                            Msg = Sheets(1).Cells(Y, 2) & "," 'ho usato la virgola non accappo, comunque se vuoi sostituisci con >>>& Chr(10)
                        Next Y
                    Workbooks(NomeFile).Close False
                    Sheets("foglio1").Cells(Rg, 1) = NomeFile
                    Sheets("foglio1").Cells(Rg, 13) = Tot = Tot + 1
                    Sheets("foglio1").Cells(Rg, 18) = Msg
                    Rg = Rg + 1
            End If
            NomeFile = Dir
        Loop
        Application.ScreenUpdating = True
        MsgBox "Finito"
    End Sub
    Ps da mettere nella cartella, insieme hai 300 file
    Ciao Raffaele , ho testato la macro ma non funziona:
    nelle celle del file REGISTRO (colonna R) mi mette solo delle virgole...

    sbaglio qualcosa io??

  17. #17
    L'avatar di Raffaele_53
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Binasco
    Età
    64
    Messaggi
    506
    Versione Office
    2007
    Likes ricevuti
    85
    Likes dati
    7

    Re: macro con funzione concatena

    Errore mio non ho messo Msg = Msg & ...ecc ecc
    Usa questo
    Codice: 
    Option Explicit
    Sub concatena()
        Dim Percorso1 As String, NomeFile As String, Msg As String, Rg, Y, Tot
        Percorso1 = ThisWorkbook.Path
        Rg = 9
        Tot = 1
        Application.ScreenUpdating = False
        NomeFile = Dir(Percorso1 & "\" & "*.xls*")
        Do While NomeFile <> ""
            If NomeFile <> ThisWorkbook.Name Then
                Msg = ""
                    Workbooks.Open (Percorso1 & "\" & NomeFile)
                        For Y = 50 To 60 'B50:B60
                            If Sheets(1).Cells(Y, 2) <> "" Then
                            Msg = Msg & Sheets(1).Cells(Y, 2) & "," 'ho usato la virgola non accappo, comunque se vuoi sostituisci con >>>& Chr(10)
                            End If
                        Next Y
                    Workbooks(NomeFile).Close False
                    Sheets("foglio1").Cells(Rg, 1) = NomeFile
                    Sheets("foglio1").Cells(Rg, 13) = Tot
                    Sheets("foglio1").Cells(Rg, 18) = Msg
                    Rg = Rg + 1
                    Tot = Tot + 1
            End If
            NomeFile = Dir
        Loop
        Application.ScreenUpdating = True
        MsgBox "Finito"
    End Sub

  18. #18
    L'avatar di ste75v
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    borgomanero
    Messaggi
    105
    Versione Office
    2013
    Likes ricevuti
    2
    Likes dati
    3

    Re: macro con funzione concatena

    [QUOTE=Raffaele_53;31923]Errore mio non ho messo Msg = Msg & ...ecc ecc
    Usa questo
    Codice: 
    Option Explicit
    Sub concatena()
        Dim Percorso1 As String, NomeFile As String, Msg As String, Rg, Y, Tot
        Percorso1 = ThisWorkbook.Path
        Rg = 9
        Tot = 1
        Application.ScreenUpdating = False
        NomeFile = Dir(Percorso1 & "\" & "*.xls*")
        Do While NomeFile <> ""
            If NomeFile <> ThisWorkbook.Name Then
                Msg = ""
                    Workbooks.Open (Percorso1 & "\" & NomeFile)
                        For Y = 50 To 60 'B50:B60
                            If Sheets(1).Cells(Y, 2) <> "" Then
                            Msg = Msg & Sheets(1).Cells(Y, 2) & "," 'ho usato la virgola non accappo, comunque se vuoi sostituisci con >>>& Chr(10)
                            End If
                        Next Y
                    Workbooks(NomeFile).Close False
                    Sheets("foglio1").Cells(Rg, 1) = NomeFile
                    Sheets("foglio1").Cells(Rg, 13) = Tot
                    Sheets("foglio1").Cells(Rg, 18) = Msg
                    Rg = Rg + 1
                    Tot = Tot + 1
            End If
            NomeFile = Dir
        Loop
        Application.ScreenUpdating = True
        MsgBox "Finito"
    End Sub
    [/QUOT

    Caio Raffaele ,
    Adesso funziona , ma ci sono 2 problemi:
    1)i dati vengono copiati , ma non vanno a capo come i singoli valori presenti nelle schede
    2)se per caso le schede non sono in ordine suo file RIEPILOGO mi copia nel posto sbagliato.(se io per un qualsiasi motivo devo invertire la sequenza della numerazione dei file "scheda n°" sul "RIEPILOGO" ,come fa a mettermi i dati corrispondenti nella riga esatta?
    la macro non dovrebbe puntare nella colonna M del "RIEPILOGO" che partire che a dalla riga 9 ho dentro il n° relativo al file "scheda n°XXX"????

  19. #19
    L'avatar di Raffaele_53
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Binasco
    Età
    64
    Messaggi
    506
    Versione Office
    2007
    Likes ricevuti
    85
    Likes dati
    7

    Re: macro con funzione concatena

    >>> ho usato la virgola non accappo, comunque se vuoi ....
    Msg = Msg & Sheets(1).Cells(Y, 2) & Chr(10)

    Attualmente il codice scrive in A il nome del file ed elabora tutti i file presenti nella cartella (in M inserisce un numero a salire).
    Mi sembra di capire che Tu in A, abbia già scritto i nomi dei file.
    Desideri che elabori solo quei file che sono scritti in colonna A?
    Pertanto scheda n°2, significa che esiste realmente un file = scheda n°2.xlsx
    Se per caso (errore tuo) il file non esiste cosa deve fare (scrivo in B non esiste?)

    Non ho ben capito l risposta in neretto, cosa significa "invertire la sequenza"???

  20. #20
    L'avatar di ste75v
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    borgomanero
    Messaggi
    105
    Versione Office
    2013
    Likes ricevuti
    2
    Likes dati
    3

    Re: macro con funzione concatena

    Citazione Originariamente Scritto da Raffaele_53 Visualizza Messaggio
    >>> ho usato la virgola non accappo, comunque se vuoi ....
    Msg = Msg & Sheets(1).Cells(Y, 2) & Chr(10)

    Attualmente il codice scrive in A il nome del file ed elabora tutti i file presenti nella cartella (in M inserisce un numero a salire).
    Mi sembra di capire che Tu in A, abbia già scritto i nomi dei file.
    Desideri che elabori solo quei file che sono scritti in colonna A?
    Pertanto scheda n°2, significa che esiste realmente un file = scheda n°2.xlsx
    Se per caso (errore tuo) il file non esiste cosa deve fare (scrivo in B non esiste?)

    Non ho ben capito l risposta in neretto, cosa significa "invertire la sequenza"???
    Raffaele , nella colonna M ( del file RIEPILOGO) a partire dalla riga 9 ho inserito il numero della scheda e secondo me la macro dovrebbe vedere il numero presente in quella cella , e leggere/copiare i dati dalla scheda corrispondente .
    I file "scheda n°" esistono tutti solo che a volte per necessità non sono in sequenza numerica (vedi tabella sotto)
    Se nel range B50:B60 non è presente alcun valore non deve inserire nulla e deve proseguire con il file successivo e così via...


    cella M9 ( = al numero della scheda) cella R9(range B50:B60 file scheda)
    1 pippo (valore scheda 1)
    2 pluto (valore scheda 2)
    3
    5
    6 paperino (valore scheda 6)
    4
    7
    8 pluto (valore scheda 8)
    9

  21. #21
    L'avatar di Raffaele_53
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Binasco
    Età
    64
    Messaggi
    506
    Versione Office
    2007
    Likes ricevuti
    85
    Likes dati
    7

    Re: macro con funzione concatena

    Prevenire è sempre meglio
    Con GiuseppeMN c'è stato un'errore che Noi non possiamo valutare
    Il VBA erà giusto, pertanto l'unica potrebbe essere la mancanza del file.

    Mi sono creato una cartella, ho messo i tuoi tre allegati
    Questo codice verifica se esiste i file in questo modo:
    "scheda n°" & (in mezzo il numero presente in M) & ".xlsx", alla fine
    Casomai non lo trova scrive in B = "non esiste"

    Codice: 
    Option Explicit
    Function ControllaFile(FileName As String) As Boolean
    On Error Resume Next
    ControllaFile = GetAttr(FileName) And vbArchive
    On Error GoTo 0
    End Function
    Sub concatena()
    Dim Percorso1 As String, NomeFile As String, Msg As String, Y, X, Ur
    Percorso1 = ThisWorkbook.Path & "\"
    Ur = Range("M" & Rows.Count).End(xlUp).Row
    Application.ScreenUpdating = False
        For X = 9 To Ur
            NomeFile = "scheda n°" & Sheets("foglio1").Cells(X, 13) & ".xlsx"
            If ControllaFile(Percorso1 & NomeFile) Then
                Msg = ""
                    Workbooks.Open (Percorso1 & "\" & NomeFile)
                        For Y = 50 To 60 'B50:B60
                            If Sheets(1).Cells(Y, 2) <> "" Then
                                Msg = Msg & Sheets(1).Cells(Y, 2) & Chr(10)
                            End If
                        Next Y
                    Workbooks(NomeFile).Close False
                    'Sheets("foglio1").Cells(X, 18) = Msg
    Sheets("foglio1").Cells(X, 18) = Mid(Msg, 1, Len(Msg) - 1) 'EDIT MODIFICATA
                Rows(X & ":" & X).AutoFit 'allarga la riga
            Else 'se sei sicurissimo che i file esistono tutti puoi mettere un ' davanti
                Sheets("foglio1").Cells(X, 2) = "non esiste" 'anche a questa
            End If
        Next X
    Application.ScreenUpdating = True
    MsgBox "Finito"
    End Sub

  22. #22
    L'avatar di ste75v
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    borgomanero
    Messaggi
    105
    Versione Office
    2013
    Likes ricevuti
    2
    Likes dati
    3

    Re: macro con funzione concatena

    siete stati gentilissimi e vi ringrazio infinitamente.

    FUNZIONAAAAA

    GRAZIEEEEEEEE


Discussioni Simili

  1. [Risolto] Funzione concatena solo se la cella è piena
    Di Samuela nel forum Domande su Excel in generale
    Risposte: 5
    Ultimo Messaggio: 25/01/17, 10:14
  2. [Risolto] Macro con funzione IF - DO - ELSE - WHEN
    Di streber nel forum Domande su Excel VBA e MACRO
    Risposte: 4
    Ultimo Messaggio: 13/01/17, 09:42
  3. funzione [conta.se]: contare il valore di un testo in una cella con "concatena"
    Di delittogoloso nel forum Domande su Excel in generale
    Risposte: 21
    Ultimo Messaggio: 05/07/16, 23:55
  4. inserimento con funzione Macro
    Di nick0573 nel forum Domande su Excel in generale
    Risposte: 6
    Ultimo Messaggio: 14/11/15, 17:30
  5. Inserimento dinamico spazi in funzione CONCATENA
    Di Nazareno Golinelli nel forum Domande su Excel in generale
    Risposte: 1
    Ultimo Messaggio: 16/10/15, 13:16

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •