VBA ouvrir fichier

Résolu/Fermé
cdr - 1 mars 2011 à 11:35
momouiz Messages postés 30 Date d'inscription lundi 24 juin 2013 Statut Membre Dernière intervention 21 octobre 2013 - 1 août 2013 à 15:25
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

A voir également:

5 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
1 mars 2011 à 12:40
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
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
Modifié par pijaku le 1/03/2011 à 11:50
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
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 288
1 mars 2011 à 11:51
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
Super - j'ai gagné du temps avec vos conseils

Merci à tous
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
momouiz Messages postés 30 Date d'inscription lundi 24 juin 2013 Statut Membre Dernière intervention 21 octobre 2013 3
1 août 2013 à 15:25
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