Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

lister les feuilles d'un classeur fermé

Claudevba

XLDnaute Nouveau
j'essaie de lister les feuilles d'un classeur fermé. j'utilse cette fonction:

Sub ListeFeuillesClasseurFerme()
Dim XlConnect As Object, XlCatalog As Object
Dim Fichier As String, Resultat As String
Dim Feuille As Object

Fichier = "C:\dossier\Nom classeur.xls"

Set XlConnect = CreateObject("ADODB.Connection")
Set XlCatalog = CreateObject("ADOX.Catalog")

XlConnect.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Fichier & _
";Extended Properties=Excel 8.0;"
Set XlCatalog.ActiveConnection = XlConnect

For Each Feuille In XlCatalog.Tables
Resultat = Resultat & Feuille.Name & vbCrLf
Next

MsgBox Resultat
End Sub

J'ai ajouté les bibliothèques recquises pour ADO. La procédure fonctionne à merveille avec les xls, mais avec les xlsx, il y'a problème. comment faire?
 

mth

XLDnaute Barbatruc
Re : lister les feuilles d'un classeur fermé

Bonsoir,

Etant nulle en VBA je dis peut-être une grosse bêtise, mais tant pis, au pire on aura gagné un éclat de rire si c'est le cas

donc là :

Fichier = "C:\dossier\Nom classeur.xlsx"

peut-être ?

@ +

mth
 
Dernière édition:

mth

XLDnaute Barbatruc
Re : lister les feuilles d'un classeur fermé

re

Petite adaptation, à l'aide des tutos trouvés ici (de silkyroad):
Lire et crire dans les classeurs Excel ferms

et ici:
Ce site n'existe plus

et ça fonctionne chez moi:

Code:
Sub ListeFeuillesClasseurFerme()
    Dim Cn As ADODB.Connection
    Dim Fichier As String
    Dim xlSheet As Variant
 
    'Définit le classeur fermé servant de base de données
    Fichier = "C:\classeur1.xlsx"
 
 
    Set Cn = New ADODB.Connection
    Set cat = CreateObject("ADOX.Catalog")
    '--- Connexion ---
    With Cn
        .Provider = "Microsoft.Jet.OLEDB.4.0"
        .ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
            & Fichier & ";Extended Properties=""Excel 12.0;HDR=YES;"""
        .Open
    End With
    '-----------------
 
Set cat.ActiveConnection = Cn
For Each xlSheet In cat.tables
Resultat = Resultat & xlSheet.Name & vbCrLf
Next
MsgBox Resultat
'--- Fermeture connexion ---
    Cn.Close
    Set Cn = Nothing
    Set cat = Nothing
End Sub

Bonne nuit,

mth
 
Dernière édition:

Discussions similaires

Réponses
19
Affichages
2 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…