Verifica se nel file è già presente un foglio

Stato
Chiusa ad ulteriori risposte.

giulianovac

Access/VBA Expert
Staff
9 Giugno 2018
5.260
245
Italy
2019
415
Questa funzione restituisce un valore booleano che indica se nel file aperto un foglio esiste già o meno.

La funzione va inserita in un MODULO e poi richiamata da una macro, ad esempio prima del codice che aggiunge un nuovo foglio per verificare che non sia già presente.

Visual Basic:
Function FoglioGiaPresente(sNomeFoglio As String) As Boolean
    Dim ws As Worksheet
    For Each ws In Worksheets
        If ws.Name = sNomeFoglio Then
            FoglioGiaPresente = True ' il foglio esiste!
            Exit For
        End If
    Next
End Function
Ad esempio:

Codice:
If FoglioGiaPresente("Foglio 1") Then
    MsgBox "Foglio già presente"
    Exit Sub
End If

VERSIONE AVANZATA
Il codice sopra vale se il foglio da cercare è contenuto nello stesso file (Workbook), ma nel caso si voglia cercare il foglio in un altro file (workbook) che non sia quello corrente, allora è necessario fare una piccola modifica per indicare a Excel qual è il workbook in cui cercare.

Visual Basic:
Function FoglioGiaPresenteInAltroWB(WB As Workbook, sNomeFoglio As String) As Boolean
    Dim ws As Worksheet
    For Each ws In WB.Worksheets
        If ws.Name = sNomeFoglio Then
            FoglioGiaPresenteInAltroWB = True ' il foglio esiste già!
            Exit For
        End If
    Next
End Function
Esempio di utilizzo della funzione:

Codice:
Dim WB As Workbook
Dim FilePath As String 
sFilePath = "C:\test\miofile.xlsx"
Set WB = Application.Workbooks.Open(sFilePath)

If FoglioGiaPresenteInAltroWB(WB, "Foglio 1") Then
    MsgBox "Foglio già presente"
    Exit Sub
End If
 
Ultima modifica:

Zer0Kelvin

VBA Expert
Staff
19 Novembre 2016
2.118
115
61
Teramo (Provincia)
2010
190
Ciao.
Si può anche evitare il ciclo con uno "sporco trucco" usando il gestore di errori
Visual Basic:
Public Function FoglioEsiste(sNomeFoglio As String) As Boolean
   
    On Error Resume Next
    Debug.Print Sheets(sNomeFoglio).Name
    FoglioEsiste = Err.Number = 0
    On Error GoTo 0
   
End Function
 
  • Like
Reactions: alfrimpa
Stato
Chiusa ad ulteriori risposte.

Sostieni ForumExcel

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