Lister les fichiers ouverts Excel

Bonjour,
quelqu'un saurait t'il comment en VBA lister tous les fichiers Excel ouverts (même pas encore sauvegardés)

je teste ce code qui fonctionne bien avec l'instance d'Excel en cours (celle de thisworkbook)
mais je ne vois pas les fichiers ouverts d'autres instances d'Excel! (sur la mm session windows)

For Each Classeur In Application.Workbooks
DateClasseur = Classeur.BuiltinDocumentProperties("Creation Date")
debug.print Classeur.Name, DateClasseur
Next

(Excel 2000 et +)
merci de votre aide
Configuration: Windows XP
Firefox 1.5.0.1

5 réponses

  1. Sub Test_Class_Ouvert()

    For i = 1 To Workbooks.Count

    ActiveSheet.Cells(i, 1) = Workbooks(i).Name

    Next i

    End Sub

    Ca permet de récuperer le nom des classeurs ouverts et les copies dans la cellule, par contre, il n'affiche pas les classeurs "non sauvegardé", j'ignore s'il faut ajouter une condition.
    10
    1. Contributeur
      Bonjour,

      cette fonction renvoie un booléen indiquant si le classeur est ouvert (true)

      <code>Function FichOuvert(F As String) As Boolean
      'D'après Didier_mdf
      Dim Wk As Workbook
      On Error Resume Next
      Set Wk = Workbooks(F)
      On Error GoTo 0
      FichOuvert = Not Wk Is Nothing
      End Function
      </code>
      0
      1. Merci ,
        mais le but est de sélectionner le dernier classeur ouvert de toutes les instances d'Excel:
        il semble que chaque instance ne détecte que ses propres classeurs
        et le code ci dessous fonctionne très bien pour ça
        For Each Classeur In Application.Workbooks
          DateClasseur = Classeur.BuiltinDocumentProperties("Creation Date")
          debug.print Classeur.Name, DateClasseur
        Next
        

        peut être qu'un objet du style "excel.applications" existe t'il sous un autre nom ?
        0
        1. Contributeur
          Pourtant tu demandais:

          ..."quelqu'un saurait t'il comment en VBA lister tous les fichiers Excel ouverts"...

          Bon WE
          0
          1. bonjour,

            je fais un gros Up de plus de 6 mois car je rencontre le même problème :

            boucler sur tous les classeur ouverts de toutes les applications excel ouverte sur le pc

            en gros quelque chose comme:

            Dim Exapp As Excel.Application
            Dim WB As Workbook

            For Each Exapp In (Excel.applicationS)

            For Each WB In Workbooks
            If WB.Name = NomFichier Then
            OuvertureFichier = True
            End If
            Next

            Next

            est ce possible de cette façon et si oui quel en est l'écriture exacte ou faut il aborder le problème différemment?
            0