Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    exel. Trovare dato su + cartelle di lavoro.

    Ciao a Tutti.

    Ho iniziato a masticare qualcosa di vba, ma sono arrivato ad un punto che mi occorrerebbe un aiutino.
    Avrei bisogno di sapere come fare per far trovare una serie di dati in più cartelle di lavoro non aperte.
    premetto che con:

    Workbooks.Open Filename:='percorso file' apro i file che mi occorrono, ma devo incicarli uno alla volta.
    sarebbe più semplice se potessi aprire tutte le cartelle di lavoro di una determinata Cartella di windows e dopo su ciascuna fare una ricerca.

    Grazie
    ale tacchino82

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    codice:
    Sub cicla()
    With Application.FileSearch
            .NewSearch
            .LookIn = "C:\Documents and Settings\tuo_path\tua_cartella"
            .FileType = msoFileTypeExcelWorkbooks
    If .Execute > 0 Then ' ci sono file excel
        For i = 1 To .FoundFiles.Count ' li ciclo
            MsgBox .FoundFiles(i)
        Next i
    End If
    End With
    End Sub
    Ti ho scritto un esempietto che mostra a video i nomi di tutti i file di excel contenuti in una cartella. Non ti sarà difficile adattarlo alle tue esigenze e fare in modo che ciascuno di essi venga aperto.

  3. #3
    Ciao, perfetto ho trovato la soluzione che mi apre tutti i file dentro la cartella indicata.

    Ora ti posto il codice che in parte mi avevi suggerito e modificato da me, non so se però usando questo potrei fare un ciclo su tutte le cartelle aperte (o chiuse ma dubito) ed avere un risultato.
    Al momento funziona su gli sheets di una sola cartella di exel.


    Sub tabella()
    Dim totale, parziale, ultima As Long
    Dim i As Integer
    Dim foglio As Worksheet
    Worksheets("CERCA").Range("BOTT, cancella1").ClearContents
    ultima = Sheets("CERCA").Range("D65536").End(xlUp).Row
    totale = 0
    i = 6
    For Each foglio In ActiveWorkbook.Sheets
    If foglio.Name <> "CERCA" And foglio.Name <> "12+ Francia" And foglio.Name <> "MASTER" Then
    parziale1 = Application.WorksheetFunction.SumIf(foglio.Range(" $E$10:$G$26"), Range("CERCA!$I$6"), foglio.Range("$G$10:$G$26"))
    parziale2 = Application.WorksheetFunction.SumIf(foglio.Range(" $E$30:$G$37"), Range("CERCA!$I$6"), foglio.Range("$G$30:$G$37"))
    If (parziale1 + parziale2) > 0 Then
    Sheets("CERCA").Range("G" & i).Value = foglio.Name
    Sheets("CERCA").Hyperlinks.Add Anchor:=Range("A" & i), Address:="", SubAddress:="'" & foglio.Name & "'!A9", ScreenTip:="Vai al foglio " & foglio.Name, TextToDisplay:=foglio.Name
    Sheets("CERCA").Range("E" & i).Value = parziale1 + parziale2
    i = i + 1
    End If
    End If
    Next foglio
    Sheets("CERCA").Range("E" & ultima).Formula = "=SUM(E6:E" & ultima - 1 & ")"
    MsgBox "Controllo Terminato", vbInformation
    End Sub

    PS:Scusa l'ignoranza, come faccio a mettere sul forum il codice all'interno dei trattini come fai Tu?
    ale tacchino82

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Originariamente inviato da alessio.82
    Ciao, perfetto ho trovato la soluzione che mi apre tutti i file dentro la cartella indicata.

    Ora ti posto il codice che in parte mi avevi suggerito e modificato da me, non so se però usando questo potrei fare un ciclo su tutte le cartelle aperte (o chiuse ma dubito) ed avere un risultato.
    Al momento funziona su gli sheets di una sola cartella di exel.


    Sub tabella()
    Dim totale, parziale, ultima As Long
    Dim i As Integer
    Dim foglio As Worksheet
    Worksheets("CERCA").Range("BOTT, cancella1").ClearContents
    ultima = Sheets("CERCA").Range("D65536").End(xlUp).Row
    totale = 0
    i = 6
    For Each foglio In ActiveWorkbook.Sheets
    If foglio.Name <> "CERCA" And foglio.Name <> "12+ Francia" And foglio.Name <> "MASTER" Then
    parziale1 = Application.WorksheetFunction.SumIf(foglio.Range(" $E$10:$G$26"), Range("CERCA!$I$6"), foglio.Range("$G$10:$G$26"))
    parziale2 = Application.WorksheetFunction.SumIf(foglio.Range(" $E$30:$G$37"), Range("CERCA!$I$6"), foglio.Range("$G$30:$G$37"))
    If (parziale1 + parziale2) > 0 Then
    Sheets("CERCA").Range("G" & i).Value = foglio.Name
    Sheets("CERCA").Hyperlinks.Add Anchor:=Range("A" & i), Address:="", SubAddress:="'" & foglio.Name & "'!A9", ScreenTip:="Vai al foglio " & foglio.Name, TextToDisplay:=foglio.Name
    Sheets("CERCA").Range("E" & i).Value = parziale1 + parziale2
    i = i + 1
    End If
    End If
    Next foglio
    Sheets("CERCA").Range("E" & ultima).Formula = "=SUM(E6:E" & ultima - 1 & ")"
    MsgBox "Controllo Terminato", vbInformation
    End Sub

    PS:Scusa l'ignoranza, come faccio a mettere sul forum il codice all'interno dei trattini come fai Tu?
    Devi racchiudere il codice tra ]code[ e ]/code[, ovviamente invertendo il senso delle quadre. Basta che prema il pulsante quota relativo al mio precedente post per vedere come funziona.

  5. #5
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Scusa ma l'altro giorno non mi è stato possibile risponderti. Provo a farlo ora anche se non ho molto da aggiungere. L'esempio che ti avevo scritto ti mostrava a video i file di excel presenti in una cartella. Con questo codice ciascun file viene aperto e per ognuno di essi viene mostrato il nome di ciascun foglio. Infine ogni file viene chiuso. Dovresti avere informazioni a sufficienza per fare ciò che desideri.

    codice:
    Sub cicla()
    With Application.FileSearch
            .NewSearch
            .LookIn = "C:\Documents and Settings\tuo_path\tua_cartella\"
            .FileType = msoFileTypeExcelWorkbooks
    If .Execute > 0 Then
    
        For i = 1 To .FoundFiles.Count
                Set wb = Workbooks.Open(.FoundFiles(i))
                For Each foglio In wb.Sheets
                    MsgBox foglio.Name
                Next foglio
                wb.Close SaveChanges:=False
        Next i
    End If
    End With
    End Sub

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.