VBA ouvrir fichier

Résolu
cdr -  
momouiz Messages postés 35 Statut Membre -
Bonjour,

Je cherche le code qui permet d'ouvrir un fichier à partir d'une macro sans générer d'erreur si le fichier est déjà ouvert.soit tester si le fichier est ouvert, soit tester le code erreur de l'ouverture.

Merci de votre aide

5 réponses

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour,

    Option Explicit
    
    Dim objExcel As Excel.Application
    
    '---------------------------------------------------------------------------------------
    ' Procédure : ClasseurEstOuvert
    ' Auteur    : 2pme, Guy Courville
    ' Date      : vendredi 11 février 2011
    ' Détails   : Le jeu consiste à ouvrir le classeur dans une instance invisible d'Excel
    '             et à tester la propriété ReadOnly de ce classeur. C'est la valeur de cette
    '             propriété qui est retournée par la fonction.
    '
    ' Note 1    : Le paramètre strNomFichierComplet doit porter le chemin complet du classeur
    '             comme son nom l'indique.
    '
    ' Note 2    : Aucun gestionnaire d'erreur n'est actif.
    '
    '---------------------------------------------------------------------------------------
    '
    Function ClasseurEstOuvert(strNomFichierComplet As String) As Boolean
    
      Set objExcel = New Excel.Application
     
      With objExcel
     
        ' L'instance d'Excel qui porte le fichier ne doit pas être visible
        .Visible = False
       
        .Workbooks.Open (strNomFichierComplet)
       
        ' Si le classeur est déjà ouvert cette propriété sera à True
        ClasseurEstOuvert = .Workbooks(1).ReadOnly
     
        .Quit
     
      End With
     
      ' Ne pas oublier de supprimer la référence à Excel
      ' sinon une autre instance fantôme hantera votre système...
      Set objExcel = Nothing
     
    End Function
    2
  2. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Bonjour,
    Si on parle bien de VBA sous excel, essaye ceci : (toto ton nom de fichier à ouvrir)
    Option Explicit 
    
    Sub essai() 
    Dim Ws As Workbook 
    Dim test As Boolean 
    test = False 
    For Each Ws In Application.Workbooks 
        If Ws.Name = "toto" Then 
            Ws.Activate 
            test = True 
            Exit Sub 
        End If 
    Next 
    If test = False Then 
        Workbooks.Open "toto.xls" 
    End If 
    End Sub

    "Laissez-moi deviner... Votre surnom, c'est «Bande Passante»? "
    - Le Tribunal des flagrants délires- P.Desproges -
    1
  3. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    Allez un p 'tit cadeau!!

    tu copies et colles ce code dans un module
    puis tu l'appelles dans ta sub
    ex:
    sub test
    if IsFileOpen("c:\data\test.xls") then
    ' il est déja ouvert 'vrai
    else
    ' il n'est pas ouvert
    endif
    end sub

    Function IsFileOpen(filename As String)
    Dim fileNum As Integer, ErrNumero As Integer
    
    On Error Resume Next
    fileNum = FreeFile()
    Open filename For Input Lock Read As #filenum
    Close fileNum
    ErrNumero = Err
    On Error GoTo 0
    Select Case ErrNumero
        Case 0
    	IsFileOpen = False
        Case 70
    	IsFileOpen = True
    End Select
    End Function
    1
  4. cdr
     
    Super - j'ai gagné du temps avec vos conseils

    Merci à tous
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. momouiz Messages postés 35 Statut Membre 3
     
    hello tout le monde, j'ai ouvert un sujet du même type mais pas de réponse je tente donc ma chance ici.

    Voila j'utilise le code proposé par @bidouilleu_R, seulement mon probléme est que mon filename est une url sharepoint sur laquelle je stock mon fichier, cela me renvoi une erreur 52 bad file name, que faire , y a t-il une solution pour résoudre ce probléme ?
    0