J'utilise le code de l'aide Powerpoint pour ouvrir un classeur Excel mais
comment savoir si le fichier Excel était déjà ouvert?
Merci
' Déclare les routines d'API nécessaires:
Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName as String, _
ByVal lpWindowName As Long) As Long
Declare Function SendMessage Lib "user32" Alias _
"SendMessageA" (ByVal hWnd as Long,ByVal wMsg as Long, _
ByVal wParam as Long, _
ByVal lParam As Long) As Long
Sub GetExcel()
Dim MyXL As Object ' Variable devant contenir la
' référence à Microsoft Excel.
Dim ExcelWasNotRunning As Boolean ' Indicateur de libération finale.
' Test pour déterminer si une copie de Microsoft Excel
' est déjà en exécution.
On Error Resume Next ' Retarde la récupération d'erreur.
' La fonction Getobject appelée sans le premier
' argument renvoie une référence à une instance de
' l'application. Si l'application n'est pas en
' exécution, une erreur se produit.
Set MyXL = Getobject(, "Excel.Application")
If Err.Number <> 0 Then ExcelWasNotRunning = True
Err.Clear ' Efface l'objet Err si une erreur s'est produite.
' Vérifie si Microsoft Excel est en exécution.
' Dans ce cas, l'ajoute à la table Running Object.
DetectExcel
' Définit la variable objet faisant référence au fichier à ouvrir.
Set MyXL = Getobject("c:\vb5\MONTEST.XLS")
' Affiche Microsoft Excel par l'intermédiaire de sa
' propriété Application. Affiche ensuite la fenêtre
' contenant le fichier à l'aide de la collection
' Windows de la référence à l'objet MyXL.
MyXL.Application.Visible = True
MyXL.Parent.Windows(1).Visible = True
' Effectue des opérations sur votre
' fichier ici.
' ...
' Si cette copie de Microsoft Excel n'était pas en cours
' d'exécution lorsque vous avez commencé, fermez-la
' à l'aide de la méthode Quit de la propriété
' Application.
' Notez que si vous tentez de quitter Microsoft Excel,
' la barre de titre clignote et un message s'affiche
' vous demandant si vous souhaitez enregistrer les
' fichiers chargés.
If ExcelWasNotRunning = True Then
MyXL.Application.Quit
End IF
Set MyXL = Nothing ' Libère la référence à l'application
' et à la feuille de calcul.
End Sub
Sub DetectExcel()
' La procédure détecte une instance d'Excel en
' exécution et l'inscrit.
Const WM_USER = 1024
Dim hWnd As Long
' Si Excel est en exécution, cet appel d'API renvoie
' son descripteur.
hWnd = FindWindow("XLMAIN", 0)
If hWnd = 0 Then ' 0 signifie qu'Excel n'était
' pas en exécution.
Exit Sub
Else
' Excel est en exécution, donc utilise la fonction
' d'API SendMessage pour l'entrer dans la table
' Running Object.
SendMessage hWnd, WM_USER + 18, 0, 0
End If
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
JB
Bonjour
Function EstOuvert(f) témoin = False For Each i In Workbooks 'on parcourt la collection des classeurs If UCase(i.Name) = UCase(f) Then témoin = True Next i EstOuvert = témoin End Function
Sub essai() If EstOuvert("x.xls") Then MsgBox "ouvert" Else MsgBox "pas ouv" End If End Sub
JB
On 23 mar, 17:44, "Jacques" <none> wrote:
Bonjour,
J'utilise le code de l'aide Powerpoint pour ouvrir un classeur Excel mais comment savoir si le fichier Excel était déjà ouvert?
Merci
' Déclare les routines d'API nécessaires: Declare Function FindWindow Lib "user32" Alias _ "FindWindowA" (ByVal lpClassName as String, _ ByVal lpWindowName As Long) As Lon g
Declare Function SendMessage Lib "user32" Alias _ "SendMessageA" (ByVal hWnd as Long,ByVal wMsg as Long, _ ByVal wParam as Long, _ ByVal lParam As Long) As Long
Sub GetExcel() Dim MyXL As Object ' Variable devant contenir la ' référence à Microsoft Excel. Dim ExcelWasNotRunning As Boolean ' Indicateur de libération fina le.
' Test pour déterminer si une copie de Microsoft Excel ' est déjà en exécution. On Error Resume Next ' Retarde la récupération d'erreur. ' La fonction Getobject appelée sans le premier ' argument renvoie une référence à une instance de ' l'application. Si l'application n'est pas en ' exécution, une erreur se produit. Set MyXL = Getobject(, "Excel.Application") If Err.Number <> 0 Then ExcelWasNotRunning = True Err.Clear ' Efface l'objet Err si une erreur s'est produite.
' Vérifie si Microsoft Excel est en exécution. ' Dans ce cas, l'ajoute à la table Running Object. DetectExcel
' Définit la variable objet faisant référence au fichier à ouvrir. Set MyXL = Getobject("c:vb5MONTEST.XLS")
' Affiche Microsoft Excel par l'intermédiaire de sa ' propriété Application. Affiche ensuite la fenêtre ' contenant le fichier à l'aide de la collection ' Windows de la référence à l'objet MyXL. MyXL.Application.Visible = True MyXL.Parent.Windows(1).Visible = True ' Effectue des opérations sur votre ' fichier ici. ' ... ' Si cette copie de Microsoft Excel n'était pas en cours ' d'exécution lorsque vous avez commencé, fermez-la ' à l'aide de la méthode Quit de la propriété ' Application. ' Notez que si vous tentez de quitter Microsoft Excel, ' la barre de titre clignote et un message s'affiche ' vous demandant si vous souhaitez enregistrer les ' fichiers chargés. If ExcelWasNotRunning = True Then MyXL.Application.Quit End IF
Set MyXL = Nothing ' Libère la référence à l'application ' et à la feuille de calcul. End Sub
Sub DetectExcel() ' La procédure détecte une instance d'Excel en ' exécution et l'inscrit. Const WM_USER = 1024 Dim hWnd As Long ' Si Excel est en exécution, cet appel d'API renvoie ' son descripteur. hWnd = FindWindow("XLMAIN", 0) If hWnd = 0 Then ' 0 signifie qu'Excel n'était ' pas en exécuti on. Exit Sub Else ' Excel est en exécution, donc utilise la fonction ' d'API SendMessage pour l'entrer dans la table ' Running Object. SendMessage hWnd, WM_USER + 18, 0, 0 End If
Bonjour
Function EstOuvert(f)
témoin = False
For Each i In Workbooks 'on parcourt la collection des classeurs
If UCase(i.Name) = UCase(f) Then témoin = True
Next i
EstOuvert = témoin
End Function
Sub essai()
If EstOuvert("x.xls") Then
MsgBox "ouvert"
Else
MsgBox "pas ouv"
End If
End Sub
JB
On 23 mar, 17:44, "Jacques" <none> wrote:
Bonjour,
J'utilise le code de l'aide Powerpoint pour ouvrir un classeur Excel mais
comment savoir si le fichier Excel était déjà ouvert?
Merci
' Déclare les routines d'API nécessaires:
Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName as String, _
ByVal lpWindowName As Long) As Lon g
Declare Function SendMessage Lib "user32" Alias _
"SendMessageA" (ByVal hWnd as Long,ByVal wMsg as Long, _
ByVal wParam as Long, _
ByVal lParam As Long) As Long
Sub GetExcel()
Dim MyXL As Object ' Variable devant contenir la
' référence à Microsoft Excel.
Dim ExcelWasNotRunning As Boolean ' Indicateur de libération fina le.
' Test pour déterminer si une copie de Microsoft Excel
' est déjà en exécution.
On Error Resume Next ' Retarde la récupération d'erreur.
' La fonction Getobject appelée sans le premier
' argument renvoie une référence à une instance de
' l'application. Si l'application n'est pas en
' exécution, une erreur se produit.
Set MyXL = Getobject(, "Excel.Application")
If Err.Number <> 0 Then ExcelWasNotRunning = True
Err.Clear ' Efface l'objet Err si une erreur s'est produite.
' Vérifie si Microsoft Excel est en exécution.
' Dans ce cas, l'ajoute à la table Running Object.
DetectExcel
' Définit la variable objet faisant référence au fichier à ouvrir.
Set MyXL = Getobject("c:vb5MONTEST.XLS")
' Affiche Microsoft Excel par l'intermédiaire de sa
' propriété Application. Affiche ensuite la fenêtre
' contenant le fichier à l'aide de la collection
' Windows de la référence à l'objet MyXL.
MyXL.Application.Visible = True
MyXL.Parent.Windows(1).Visible = True
' Effectue des opérations sur votre
' fichier ici.
' ...
' Si cette copie de Microsoft Excel n'était pas en cours
' d'exécution lorsque vous avez commencé, fermez-la
' à l'aide de la méthode Quit de la propriété
' Application.
' Notez que si vous tentez de quitter Microsoft Excel,
' la barre de titre clignote et un message s'affiche
' vous demandant si vous souhaitez enregistrer les
' fichiers chargés.
If ExcelWasNotRunning = True Then
MyXL.Application.Quit
End IF
Set MyXL = Nothing ' Libère la référence à l'application
' et à la feuille de calcul.
End Sub
Sub DetectExcel()
' La procédure détecte une instance d'Excel en
' exécution et l'inscrit.
Const WM_USER = 1024
Dim hWnd As Long
' Si Excel est en exécution, cet appel d'API renvoie
' son descripteur.
hWnd = FindWindow("XLMAIN", 0)
If hWnd = 0 Then ' 0 signifie qu'Excel n'était
' pas en exécuti on.
Exit Sub
Else
' Excel est en exécution, donc utilise la fonction
' d'API SendMessage pour l'entrer dans la table
' Running Object.
SendMessage hWnd, WM_USER + 18, 0, 0
End If
Function EstOuvert(f) témoin = False For Each i In Workbooks 'on parcourt la collection des classeurs If UCase(i.Name) = UCase(f) Then témoin = True Next i EstOuvert = témoin End Function
Sub essai() If EstOuvert("x.xls") Then MsgBox "ouvert" Else MsgBox "pas ouv" End If End Sub
JB
On 23 mar, 17:44, "Jacques" <none> wrote:
Bonjour,
J'utilise le code de l'aide Powerpoint pour ouvrir un classeur Excel mais comment savoir si le fichier Excel était déjà ouvert?
Merci
' Déclare les routines d'API nécessaires: Declare Function FindWindow Lib "user32" Alias _ "FindWindowA" (ByVal lpClassName as String, _ ByVal lpWindowName As Long) As Lon g
Declare Function SendMessage Lib "user32" Alias _ "SendMessageA" (ByVal hWnd as Long,ByVal wMsg as Long, _ ByVal wParam as Long, _ ByVal lParam As Long) As Long
Sub GetExcel() Dim MyXL As Object ' Variable devant contenir la ' référence à Microsoft Excel. Dim ExcelWasNotRunning As Boolean ' Indicateur de libération fina le.
' Test pour déterminer si une copie de Microsoft Excel ' est déjà en exécution. On Error Resume Next ' Retarde la récupération d'erreur. ' La fonction Getobject appelée sans le premier ' argument renvoie une référence à une instance de ' l'application. Si l'application n'est pas en ' exécution, une erreur se produit. Set MyXL = Getobject(, "Excel.Application") If Err.Number <> 0 Then ExcelWasNotRunning = True Err.Clear ' Efface l'objet Err si une erreur s'est produite.
' Vérifie si Microsoft Excel est en exécution. ' Dans ce cas, l'ajoute à la table Running Object. DetectExcel
' Définit la variable objet faisant référence au fichier à ouvrir. Set MyXL = Getobject("c:vb5MONTEST.XLS")
' Affiche Microsoft Excel par l'intermédiaire de sa ' propriété Application. Affiche ensuite la fenêtre ' contenant le fichier à l'aide de la collection ' Windows de la référence à l'objet MyXL. MyXL.Application.Visible = True MyXL.Parent.Windows(1).Visible = True ' Effectue des opérations sur votre ' fichier ici. ' ... ' Si cette copie de Microsoft Excel n'était pas en cours ' d'exécution lorsque vous avez commencé, fermez-la ' à l'aide de la méthode Quit de la propriété ' Application. ' Notez que si vous tentez de quitter Microsoft Excel, ' la barre de titre clignote et un message s'affiche ' vous demandant si vous souhaitez enregistrer les ' fichiers chargés. If ExcelWasNotRunning = True Then MyXL.Application.Quit End IF
Set MyXL = Nothing ' Libère la référence à l'application ' et à la feuille de calcul. End Sub
Sub DetectExcel() ' La procédure détecte une instance d'Excel en ' exécution et l'inscrit. Const WM_USER = 1024 Dim hWnd As Long ' Si Excel est en exécution, cet appel d'API renvoie ' son descripteur. hWnd = FindWindow("XLMAIN", 0) If hWnd = 0 Then ' 0 signifie qu'Excel n'était ' pas en exécuti on. Exit Sub Else ' Excel est en exécution, donc utilise la fonction ' d'API SendMessage pour l'entrer dans la table ' Running Object. SendMessage hWnd, WM_USER + 18, 0, 0 End If
Jacques
merci
"JB" a écrit dans le message de groupe de discussion :
Bonjour
Function EstOuvert(f) témoin = False For Each i In Workbooks 'on parcourt la collection des classeurs If UCase(i.Name) = UCase(f) Then témoin = True Next i EstOuvert = témoin End Function
Sub essai() If EstOuvert("x.xls") Then MsgBox "ouvert" Else MsgBox "pas ouv" End If End Sub
JB
On 23 mar, 17:44, "Jacques" <none> wrote:
Bonjour,
J'utilise le code de l'aide Powerpoint pour ouvrir un classeur Excel mais comment savoir si le fichier Excel était déjà ouvert?
Merci
' Déclare les routines d'API nécessaires: Declare Function FindWindow Lib "user32" Alias _ "FindWindowA" (ByVal lpClassName as String, _ ByVal lpWindowName As Long) As Long
Declare Function SendMessage Lib "user32" Alias _ "SendMessageA" (ByVal hWnd as Long,ByVal wMsg as Long, _ ByVal wParam as Long, _ ByVal lParam As Long) As Long
Sub GetExcel() Dim MyXL As Object ' Variable devant contenir la ' référence à Microsoft Excel. Dim ExcelWasNotRunning As Boolean ' Indicateur de libération finale.
' Test pour déterminer si une copie de Microsoft Excel ' est déjà en exécution. On Error Resume Next ' Retarde la récupération d'erreur. ' La fonction Getobject appelée sans le premier ' argument renvoie une référence à une instance de ' l'application. Si l'application n'est pas en ' exécution, une erreur se produit. Set MyXL = Getobject(, "Excel.Application") If Err.Number <> 0 Then ExcelWasNotRunning = True Err.Clear ' Efface l'objet Err si une erreur s'est produite.
' Vérifie si Microsoft Excel est en exécution. ' Dans ce cas, l'ajoute à la table Running Object. DetectExcel
' Définit la variable objet faisant référence au fichier à ouvrir. Set MyXL = Getobject("c:vb5MONTEST.XLS")
' Affiche Microsoft Excel par l'intermédiaire de sa ' propriété Application. Affiche ensuite la fenêtre ' contenant le fichier à l'aide de la collection ' Windows de la référence à l'objet MyXL. MyXL.Application.Visible = True MyXL.Parent.Windows(1).Visible = True ' Effectue des opérations sur votre ' fichier ici. ' ... ' Si cette copie de Microsoft Excel n'était pas en cours ' d'exécution lorsque vous avez commencé, fermez-la ' à l'aide de la méthode Quit de la propriété ' Application. ' Notez que si vous tentez de quitter Microsoft Excel, ' la barre de titre clignote et un message s'affiche ' vous demandant si vous souhaitez enregistrer les ' fichiers chargés. If ExcelWasNotRunning = True Then MyXL.Application.Quit End IF
Set MyXL = Nothing ' Libère la référence à l'application ' et à la feuille de calcul. End Sub
Sub DetectExcel() ' La procédure détecte une instance d'Excel en ' exécution et l'inscrit. Const WM_USER = 1024 Dim hWnd As Long ' Si Excel est en exécution, cet appel d'API renvoie ' son descripteur. hWnd = FindWindow("XLMAIN", 0) If hWnd = 0 Then ' 0 signifie qu'Excel n'était ' pas en exécution. Exit Sub Else ' Excel est en exécution, donc utilise la fonction ' d'API SendMessage pour l'entrer dans la table ' Running Object. SendMessage hWnd, WM_USER + 18, 0, 0 End If
merci
"JB" <boisgontier@hotmail.com> a écrit dans le message de groupe de
discussion :
e415d593-1f38-445d-a9ef-d664a0e28972@2g2000hsn.googlegroups.com...
Bonjour
Function EstOuvert(f)
témoin = False
For Each i In Workbooks 'on parcourt la collection des classeurs
If UCase(i.Name) = UCase(f) Then témoin = True
Next i
EstOuvert = témoin
End Function
Sub essai()
If EstOuvert("x.xls") Then
MsgBox "ouvert"
Else
MsgBox "pas ouv"
End If
End Sub
JB
On 23 mar, 17:44, "Jacques" <none> wrote:
Bonjour,
J'utilise le code de l'aide Powerpoint pour ouvrir un classeur Excel mais
comment savoir si le fichier Excel était déjà ouvert?
Merci
' Déclare les routines d'API nécessaires:
Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName as String, _
ByVal lpWindowName As Long) As Long
Declare Function SendMessage Lib "user32" Alias _
"SendMessageA" (ByVal hWnd as Long,ByVal wMsg as Long, _
ByVal wParam as Long, _
ByVal lParam As Long) As Long
Sub GetExcel()
Dim MyXL As Object ' Variable devant contenir la
' référence à Microsoft Excel.
Dim ExcelWasNotRunning As Boolean ' Indicateur de libération finale.
' Test pour déterminer si une copie de Microsoft Excel
' est déjà en exécution.
On Error Resume Next ' Retarde la récupération d'erreur.
' La fonction Getobject appelée sans le premier
' argument renvoie une référence à une instance de
' l'application. Si l'application n'est pas en
' exécution, une erreur se produit.
Set MyXL = Getobject(, "Excel.Application")
If Err.Number <> 0 Then ExcelWasNotRunning = True
Err.Clear ' Efface l'objet Err si une erreur s'est produite.
' Vérifie si Microsoft Excel est en exécution.
' Dans ce cas, l'ajoute à la table Running Object.
DetectExcel
' Définit la variable objet faisant référence au fichier à ouvrir.
Set MyXL = Getobject("c:vb5MONTEST.XLS")
' Affiche Microsoft Excel par l'intermédiaire de sa
' propriété Application. Affiche ensuite la fenêtre
' contenant le fichier à l'aide de la collection
' Windows de la référence à l'objet MyXL.
MyXL.Application.Visible = True
MyXL.Parent.Windows(1).Visible = True
' Effectue des opérations sur votre
' fichier ici.
' ...
' Si cette copie de Microsoft Excel n'était pas en cours
' d'exécution lorsque vous avez commencé, fermez-la
' à l'aide de la méthode Quit de la propriété
' Application.
' Notez que si vous tentez de quitter Microsoft Excel,
' la barre de titre clignote et un message s'affiche
' vous demandant si vous souhaitez enregistrer les
' fichiers chargés.
If ExcelWasNotRunning = True Then
MyXL.Application.Quit
End IF
Set MyXL = Nothing ' Libère la référence à l'application
' et à la feuille de calcul.
End Sub
Sub DetectExcel()
' La procédure détecte une instance d'Excel en
' exécution et l'inscrit.
Const WM_USER = 1024
Dim hWnd As Long
' Si Excel est en exécution, cet appel d'API renvoie
' son descripteur.
hWnd = FindWindow("XLMAIN", 0)
If hWnd = 0 Then ' 0 signifie qu'Excel n'était
' pas en exécution.
Exit Sub
Else
' Excel est en exécution, donc utilise la fonction
' d'API SendMessage pour l'entrer dans la table
' Running Object.
SendMessage hWnd, WM_USER + 18, 0, 0
End If
"JB" a écrit dans le message de groupe de discussion :
Bonjour
Function EstOuvert(f) témoin = False For Each i In Workbooks 'on parcourt la collection des classeurs If UCase(i.Name) = UCase(f) Then témoin = True Next i EstOuvert = témoin End Function
Sub essai() If EstOuvert("x.xls") Then MsgBox "ouvert" Else MsgBox "pas ouv" End If End Sub
JB
On 23 mar, 17:44, "Jacques" <none> wrote:
Bonjour,
J'utilise le code de l'aide Powerpoint pour ouvrir un classeur Excel mais comment savoir si le fichier Excel était déjà ouvert?
Merci
' Déclare les routines d'API nécessaires: Declare Function FindWindow Lib "user32" Alias _ "FindWindowA" (ByVal lpClassName as String, _ ByVal lpWindowName As Long) As Long
Declare Function SendMessage Lib "user32" Alias _ "SendMessageA" (ByVal hWnd as Long,ByVal wMsg as Long, _ ByVal wParam as Long, _ ByVal lParam As Long) As Long
Sub GetExcel() Dim MyXL As Object ' Variable devant contenir la ' référence à Microsoft Excel. Dim ExcelWasNotRunning As Boolean ' Indicateur de libération finale.
' Test pour déterminer si une copie de Microsoft Excel ' est déjà en exécution. On Error Resume Next ' Retarde la récupération d'erreur. ' La fonction Getobject appelée sans le premier ' argument renvoie une référence à une instance de ' l'application. Si l'application n'est pas en ' exécution, une erreur se produit. Set MyXL = Getobject(, "Excel.Application") If Err.Number <> 0 Then ExcelWasNotRunning = True Err.Clear ' Efface l'objet Err si une erreur s'est produite.
' Vérifie si Microsoft Excel est en exécution. ' Dans ce cas, l'ajoute à la table Running Object. DetectExcel
' Définit la variable objet faisant référence au fichier à ouvrir. Set MyXL = Getobject("c:vb5MONTEST.XLS")
' Affiche Microsoft Excel par l'intermédiaire de sa ' propriété Application. Affiche ensuite la fenêtre ' contenant le fichier à l'aide de la collection ' Windows de la référence à l'objet MyXL. MyXL.Application.Visible = True MyXL.Parent.Windows(1).Visible = True ' Effectue des opérations sur votre ' fichier ici. ' ... ' Si cette copie de Microsoft Excel n'était pas en cours ' d'exécution lorsque vous avez commencé, fermez-la ' à l'aide de la méthode Quit de la propriété ' Application. ' Notez que si vous tentez de quitter Microsoft Excel, ' la barre de titre clignote et un message s'affiche ' vous demandant si vous souhaitez enregistrer les ' fichiers chargés. If ExcelWasNotRunning = True Then MyXL.Application.Quit End IF
Set MyXL = Nothing ' Libère la référence à l'application ' et à la feuille de calcul. End Sub
Sub DetectExcel() ' La procédure détecte une instance d'Excel en ' exécution et l'inscrit. Const WM_USER = 1024 Dim hWnd As Long ' Si Excel est en exécution, cet appel d'API renvoie ' son descripteur. hWnd = FindWindow("XLMAIN", 0) If hWnd = 0 Then ' 0 signifie qu'Excel n'était ' pas en exécution. Exit Sub Else ' Excel est en exécution, donc utilise la fonction ' d'API SendMessage pour l'entrer dans la table ' Running Object. SendMessage hWnd, WM_USER + 18, 0, 0 End If