Risolto Conta su piú file possibile?

klingklang

Ciappinaro VBA_Expert
Expert
20 Ottobre 2017
4.799
113
42
San Giovanni in Persiceto (BO)
www.excelswissknife.com
2016, 365
328
Che siano tutti excel lo immaginavo Caffe_ridochiedevo però se avessero tutti estensione .xlsm (file con attivazione di macro) o varie, e in ogni caso se nella stessa cartella ci fossero anche altri file excel, che non devono essere coinvolti nell'elaborazione

Prova comunque la versione in allegato e fammi sapere Saluto_saluto
 

Allegati

Ultima modifica:

ges

Excel/VBA Expert
Amministratore
Expert
21 Giugno 2015
20.197
1.733
Como
2011MAC 2016WIN
413
Ciao,
oltre l'ottima soluzione di klingklang @klingklang cappello_saluta, se vuoi usare il vba, lascia tutti i tuoi files in una cartella e con la seguente macro selezione tale cartella e avrai tutti i dati della cella C12
Visual Basic:
Sub Copia_da_piu_file()
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Dim fDialog As FileDialog
    Dim i As Integer
    Dim uR As Long
    Dim uR1 As Long
    Dim WK As Workbook
    Dim WK1 As Workbook
    Dim sh As Worksheet
    Dim sh1 As Worksheet
    Dim fs As Object
    Dim Fold As Object
    Dim Nomefile As Object
    Dim cartella As Variant
    Set fDialog = Application.FileDialog(msoFileDialogFolderPicker)
        MsgBox "Scegli la cartella con i files!", vbInformation, "AVVISO"
    With fDialog
         .Show
    cartella = .SelectedItems(1)
End With
    Set WK = ThisWorkbook
    Set sh = WK.Worksheets(1)
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set Fold = fs.getfolder(cartella)
    Set cartella = Fold.Files
    For Each Nomefile In cartella
        Set WK1 = Workbooks.Open(Nomefile)
        Set sh1 = WK1.Worksheets("Misure")
        sh1.Range("C12").Copy
        DoEvents
        uR1 = sh.Cells(Rows.Count, 1).End(xlUp).Row + 1
        sh.Range("A" & uR1) = Left(WK1.Name, InStr(WK1.Name, ".") - 1)
        sh.Range("B" & uR1).PasteSpecial Paste:=xlValues
        WK1.Close SaveChanges:=False
    Next
    WK.Save
    Set fs = Nothing
    Set cartella = Nothing
    Set Fold = Nothing
    Set fDialog = Nothing
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
     MsgBox "Fatto!", vbInformation, "NOTIFICA"
End Sub
 

Allegati

  • Like
Reactions: Rubik72

stewee

Utente junior
14 Luglio 2017
45
8
roma
excel 2016
0
Ciao,
oltre l'ottima soluzione di klingklang @klingklang cappello_saluta, se vuoi usare il vba, lascia tutti i tuoi files in una cartella e con la seguente macro selezione tale cartella e avrai tutti i dati della cella C12
Visual Basic:
Sub Copia_da_piu_file()
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Dim fDialog As FileDialog
    Dim i As Integer
    Dim uR As Long
    Dim uR1 As Long
    Dim WK As Workbook
    Dim WK1 As Workbook
    Dim sh As Worksheet
    Dim sh1 As Worksheet
    Dim fs As Object
    Dim Fold As Object
    Dim Nomefile As Object
    Dim cartella As Variant
    Set fDialog = Application.FileDialog(msoFileDialogFolderPicker)
        MsgBox "Scegli la cartella con i files!", vbInformation, "AVVISO"
    With fDialog
         .Show
    cartella = .SelectedItems(1)
End With
    Set WK = ThisWorkbook
    Set sh = WK.Worksheets(1)
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set Fold = fs.getfolder(cartella)
    Set cartella = Fold.Files
    For Each Nomefile In cartella
        Set WK1 = Workbooks.Open(Nomefile)
        Set sh1 = WK1.Worksheets("Misure")
        sh1.Range("C12").Copy
        DoEvents
        uR1 = sh.Cells(Rows.Count, 1).End(xlUp).Row + 1
        sh.Range("A" & uR1) = Left(WK1.Name, InStr(WK1.Name, ".") - 1)
        sh.Range("B" & uR1).PasteSpecial Paste:=xlValues
        WK1.Close SaveChanges:=False
    Next
    WK.Save
    Set fs = Nothing
    Set cartella = Nothing
    Set Fold = Nothing
    Set fDialog = Nothing
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
     MsgBox "Fatto!", vbInformation, "NOTIFICA"
End Sub
Molto immediato! L'unico problema è che io scelgo la cartella con i files (google drive) e poi mi dice "la cartella di lavoro contiene collegamenti a una o più origini esterne che potrebbero non essere sicure. Se i collegamenti sono considerati attendibili, aggiornarli per ottenere i dati più recenti. In caso contrario continuare a usare i dati correnti".
Io faccio "aggiorna", lui lavora un pò e poi mi dice "errore di run time '9': indice non incluso nell'intervallo" e posso selezionare "fine" o "debug".
Se faccio "debug" trovo evidenziato in giallo questo: Set sh1 = WK1.Worksheets("Misure")

P.S. Non so se sia importante ma la cartella che seleziono è sincronizzata con "google drive" ed al suo interno contiene i file excel in questione e cartelle con all'interno sempre altri file excel in questione più, a olte, dei file word.
 

stewee

Utente junior
14 Luglio 2017
45
8
roma
excel 2016
0
Che siano tutti excel lo immaginavo Caffe_ridochiedevo però se avessero tutti estensione .xlsm (file con attivazione di macro) o varie, e in ogni caso se nella stessa cartella ci fossero anche altri file excel, che non devono essere coinvolti nell'elaborazione

Prova comunque la versione in allegato e fammi sapere Saluto_saluto
Errore imprevisto nella query 'Trasforma file da Clienti'. Expression.Error: La chiave non corrisponde ad alcuna riga della tabella. Dettagli: Key= Item=Misure Kind=Sheet Table=

Mi dice cosi.
 

klingklang

Ciappinaro VBA_Expert
Expert
20 Ottobre 2017
4.799
113
42
San Giovanni in Persiceto (BO)
www.excelswissknife.com
2016, 365
328
Errore imprevisto nella query 'Trasforma file da Clienti'. Expression.Error: La chiave non corrisponde ad alcuna riga della tabella. Dettagli: Key= Item=Misure Kind=Sheet Table=

Mi dice cosi.
Dimmi la verità: nella cartella ci sono anche degli altri file Excel che non c'entrano niente?? L'errore che hai trascritto significa che nel file elaborato non c'è nessun foglio "Misure"!

Non potresti fare una cartella in cui ci sono SOLO i file che devono essere elaborati? Renderebbe le cose molto più semplici per tutti!
 
  • Like
Reactions: stewee

stewee

Utente junior
14 Luglio 2017
45
8
roma
excel 2016
0
Ok, fatto. Messo tutto in una cartella con solo i file excel in questione. Funziona la macro!
L'unica cosa strana è che mi da ogni tanto "la cartella di lavoro contiene collegamenti a una o più origini esterne che potrebbero non essere sicure. Se i collegamenti sono considerati attendibili, aggiornarli per ottenere i dati più recenti. In caso contrario continuare a usare i dati correnti".
Io faccio "aggiorna" e va avanti ed alla fine il risultato me l'ha dato! Ora se olessi fare la stessa cosa per la cella D12, E12 etc etc mi basta aprire la macro e sostituire tutte le volte che trovo scritto C12 con D12 e poi E12, giusto?

Con il metodo di klingklang @klingklang mi dice proprio il numero delle visite. Che fico! Bravo, grazie!
 
  • Like
Reactions: klingklang

ges

Excel/VBA Expert
Amministratore
Expert
21 Giugno 2015
20.197
1.733
Como
2011MAC 2016WIN
413
Bene, se vuoi usare il metodo di klingklang @klingklang puoi chiudere la discussione visto che hai risolto.
 

Sostieni ForumExcel

Aiutaci a sostenere le spese e a mantenere online la community attraverso una libera donazione!