testez l'ouverture d'un fichier

Le
eric.zzzz
Bonjour,
J'ai un bouton de controle qui me permet de créer un fichier Excel
(macro "TransférerFeuilleCalcul"sur clic). le problème c'est que si on
appuie une 2° fois sur ce bouton, les nouvelles données vont venir
s'écrire sur le 1er fichier.
J'ai fait : Private Sub Form_Load()
On Error Resume Next
Kill "D:Baf*.XLS"
Mais je constate que c'est loin d'etre suffisant
Comment faire pour tester si des fichiers excel sont ouverts et
demander à l'utilisateur de les fermer avant de faire un kill? (je
suis preneur de toutes propositions)
merci d'avance
Eric
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
3stone
Le #6346171
Salut,

J'ai un bouton de controle qui me permet de créer un fichier Excel
(macro "TransférerFeuilleCalcul"sur clic). le problème c'est que si on
appuie une 2° fois sur ce bouton, les nouvelles données vont venir
s'écrire sur le 1er fichier.
J'ai fait : Private Sub Form_Load()
On Error Resume Next
Kill "D:Baf*.XLS"
Mais je constate que c'est loin d'etre suffisant ...
Comment faire pour tester si des fichiers excel sont ouverts et
demander à l'utilisateur de les fermer avant de faire un kill...? (je
suis preneur de toutes propositions...)


Il y a ceci, à l'aide des API :
http://www.mvps.org/accessfr/apis/api0007.htm


ou alors par automation...

On Error Resume Next
Set Excel_Application = GetObject(, "Excel.Application")
If Err.Number = 0 Then
Msgbox "Excel déjà ouvert..."
...
exit sub
else
Set Excel_Application = CreateObject("Excel.Application")
End If
Err.Clear

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
eric.zzzz
Le #6360501
On 12 mar, 03:03, "3stone"
Salut,

J'ai un bouton de controle qui me permet de créer un fichier Excel
(macro "TransférerFeuilleCalcul"sur clic). le problème c'est que si on
appuie une 2° fois sur ce bouton, les nouvelles données vont venir
s'écrire sur le 1er fichier.
J'ai fait : Private Sub Form_Load()
On Error Resume Next
  Kill "D:Baf*.XLS"
Mais je constate que c'est loin d'etre suffisant ...
Comment faire pour tester si des fichiers excel sont ouverts et
demander à l'utilisateur de les fermer avant de faire un kill...? (je
suis preneur de toutes propositions...)

Il y a ceci, à l'aide des API :http://www.mvps.org/accessfr/apis/api0007 .htm

ou alors par automation...

On Error Resume Next
Set Excel_Application = GetObject(, "Excel.Application")
If Err.Number = 0 Then
        Msgbox "Excel déjà ouvert..."
        ...
        exit sub
else
    Set Excel_Application = CreateObject("Excel.Application")
End If
Err.Clear

--
A+
Pierre (3stone) Access MVP
Perso:http://www.3stone.be/
MPFA:http://www.mpfa.info/ (infos générales)


Je ne sais pas ce que signifie "Err.Number = 0", mais qu'Excel soit
fermé ou ouvert, la condition if est toujours vérifié, autrement dit,
j'ai toujours le message "Excel déjà ouvert..."
J'ai fait F1 sur Err.Number, mais je n'ai pas compris...

eric.zzzz
Le #6360471
On 12 mar, 03:03, "3stone"
Salut,
ou alors par automation...

On Error Resume Next
Set Excel_Application = GetObject(, "Excel.Application")
If Err.Number = 0 Then
        Msgbox "Excel déjà ouvert..."
        ...
        exit sub
else
    Set Excel_Application = CreateObject("Excel.Application")
End If
Err.Clear


J'ai trouvé cette solution...(j'espère qu'elle s'avérera être bonne)
Dim MyFile
MyFile = Dir("D:BafFic1.XLS")
If MyFile = "Fic1.xls" Then
MsgBox "Supprimer Excel dans D:Baf...", vbOKOnly
Exit Sub
End If

Michel_D
Le #6360311
Bonjour,
On 12 mar, 03:03, "3stone"
Salut,

J'ai un bouton de controle qui me permet de créer un fichier Excel
(macro "TransférerFeuilleCalcul"sur clic). le problème c'est que si on
appuie une 2° fois sur ce bouton, les nouvelles données vont venir
s'écrire sur le 1er fichier.
J'ai fait : Private Sub Form_Load()
On Error Resume Next
Kill "D:Baf*.XLS"
Mais je constate que c'est loin d'etre suffisant ...
Comment faire pour tester si des fichiers excel sont ouverts et
demander à l'utilisateur de les fermer avant de faire un kill...? (je
suis preneur de toutes propositions...)

Il y a ceci, à l'aide des API :http://www.mvps.org/accessfr/apis/api0007..htm

ou alors par automation...

On Error Resume Next
Set Excel_Application = GetObject(, "Excel.Application")
If Err.Number = 0 Then
Msgbox "Excel déjà ouvert..."
...
exit sub
else
Set Excel_Application = CreateObject("Excel.Application")
End If
Err.Clear

--
A+
Pierre (3stone) Access MVP
Perso:http://www.3stone.be/
MPFA:http://www.mpfa.info/ (infos générales)


Je ne sais pas ce que signifie "Err.Number = 0", mais qu'Excel soit
fermé ou ouvert, la condition if est toujours vérifié, autrement dit,
j'ai toujours le message "Excel déjà ouvert..."
J'ai fait F1 sur Err.Number, mais je n'ai pas compris...


Hum, je pense qu'il devait y avoir une instance Excel ouverte mais
invisible, pour être sur il faut utiliser le gestionnaire des taches
ou un utilitaire du style "process explorer"


3stone
Le #6360291
Salut,

[..]
ou alors par automation...

On Error Resume Next
Set Excel_Application = GetObject(, "Excel.Application")
If Err.Number = 0 Then
Msgbox "Excel déjà ouvert..."
...
exit sub
else
Set Excel_Application = CreateObject("Excel.Application")
End If
Err.Clear


Je ne sais pas ce que signifie "Err.Number = 0", mais qu'Excel soit
fermé ou ouvert, la condition if est toujours vérifié, autrement dit,
j'ai toujours le message "Excel déjà ouvert..."
J'ai fait F1 sur Err.Number, mais je n'ai pas compris...

---

On Error Resume Next
- dit de passer à la ligne suivante en cas d'erreur...

Set Excel_Application = GetObject(...)
- retourne une erreur si Excel n'est *pas* démarré

mais... le exit sub est de trop ;-)

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)

eric.zzzz
Le #6359961
On 12 mar, 19:01, Michel_D wrote:
Hum, je pense qu'il devait y avoir une instance Excel ouverte mais
  invisible, pour être sur il faut utiliser le gestionnaire des taches
  ou un utilitaire du style "process explorer"-


Effectivement, le processus EXCEL.EXE était tjrs présent dans la liste
des taches. En le terminant (avec CTrl+alt+Suppr), le code n'entrait
pas dans la boucle IF ...

Publicité
Poster une réponse
Anonyme