begin process at 2012 02 15 13:34:30
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Visual Basic & VB.NET

 > 

Archives Visual Basic

 > 

J'AI BESOIN D'AIDE !!!! :)

 > 

recherche du fichier excel.exe


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

recherche du fichier excel.exe

lundi 13 décembre 2004 à 16:37:34 | recherche du fichier excel.exe

astridgall

bonjour,

je souhaite dans mon programme vb6 récupérer le chemin du fichier excel.exe. Je n'ai rien trouvé de concluant sur ce site.

Merci d'avance.
lundi 13 décembre 2004 à 17:15:58 | Re : recherche du fichier excel.exe

barley

essaye ca, il doit y avoir beaucoup mieux... mais ca marche

'module de crenaud76 pour la fonction shellwait qui permet d'attendre la fin de l'execution avant de continuer la lecture du code
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Private Const STILL_ACTIVE = &H103
Private Const PROCESS_QUERY_INFORMATION = &H400

Public Sub ShellWait(ByVal JobToDo As String)
Dim hProcess As Long, RetVal As Long

hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, Shell(JobToDo, vbMinimizedNoFocus))
Do
GetExitCodeProcess hProcess, RetVal
DoEvents
Sleep 100
Loop While RetVal = STILL_ACTIVE
End Sub

Private Sub main()

'A initialisation et variables

Dim compteur, compteurlettres, textline, textinv, lettre, nomfichier, objet, objetfichier, fichiersource, repertoire
fichiersource = "c:\test.txt"
repertoire = "c:\" & Chr(34) & "Program Files" & Chr(34)

'B éxécution de la commande DOS qui écrira tous les fichiers d'un dossier et de ces sous-dossiers dans un fichier source
ShellWait "cmd.exe /c dir /A-D /S /O:N /B " & repertoire & " > " & fichiersource 'execute commande DOS et stop la suite du programme tant que la commande DOS n'est pas terminée"



'C module de récupération du chemin de "excel.exe"
Open fichiersource For Input As #1 ' Ouvre le fichier source.
Do While Not EOF(1) ' Effectue la boucle jusqu'à la fin du fichier source.
Line Input #1, textline ' Lit la ligne dans la variable.
textinv = StrReverse(textline) ' inverse les caractères du texte de la ligne en cours
If Left(textinv, 9) = "EXE.LECXE" Then 'si la fin de la ligne est bien excel.exe alors
MsgBox textline
End If

Loop 'relance la boucle des lignes
Close #1 ' Ferme le fichier.

'D module d'effacement du fichier source
Set objet = CreateObject("Scripting.FileSystemObject") ' crée un objet
Set objetfichier = objet.getfile(fichiersource) 'l'objet devient le fichier source
objetfichier.Delete True 'efface et force la suppression du fichier source

End Sub
lundi 13 décembre 2004 à 17:18:02 | Re : recherche du fichier excel.exe

barley

n'oublie pas d'effacer certaines variables qui te sont inutiles, c'est la reprise d'une appli... j'ai oublier d'enlever des variables
lundi 13 décembre 2004 à 17:32:26 | Re : recherche du fichier excel.exe

barley

comme ca , c'est un peu mieux

'module de crenaud76 pour la fonction shellwait qui permet d'attendre la fin de l'execution avant de continuer la lecture du code
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Const STILL_ACTIVE = &H103
Private Const PROCESS_QUERY_INFORMATION = &H400
Public Sub ShellWait(ByVal JobToDo As String)
Dim hProcess As Long, RetVal As Long
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, Shell(JobToDo, vbMinimizedNoFocus))
Do
GetExitCodeProcess hProcess, RetVal
DoEvents
Sleep 100
Loop While RetVal = STILL_ACTIVE
End Sub
Private Sub main()
'A initialisation et variables
Dim textline, objet, objetfichier, fichiersource, repertoire
fichiersource = "c:\test.txt"
repertoire = "c:\"
fichieratrouver = "excel.exe"
'B éxécution de la commande DOS qui écrira tous les fichiers d'un dossier et de ces sous-dossiers dans un fichier source
ShellWait "cmd.exe /c dir /A-D /S /O:N /B /L " & repertoire & " > " & fichiersource 'execute commande DOS et stop la suite du programme tant que la commande DOS n'est pas terminée"
'C module de récupération du chemin de "excel.exe"
Open fichiersource For Input As #1 ' Ouvre le fichier source.
Do While Not EOF(1) ' Effectue la boucle jusqu'à la fin du fichier source.
Line Input #1, textline ' Lit la ligne dans la variable.
If Left(StrReverse(textline), Len(fichieratrouver)) = StrReverse(fichieratrouver) Then 'si la fin de la ligne est bien fichieratrouver alors
MsgBox textline
End If
Loop 'relance la boucle des lignes
Close #1 ' Ferme le fichier.
'D module d'effacement du fichier source
Set objet = CreateObject("Scripting.FileSystemObject") ' crée un objet
Set objetfichier = objet.getfile(fichiersource) 'l'objet devient le fichier source
objetfichier.Delete True 'efface et force la suppression du fichier source
End Sub


si ca va pas, n'hesite pas

lundi 13 décembre 2004 à 18:35:44 | Re : recherche du fichier excel.exe

CanisLupus

Membre Club Administrateur CodeS-SourceS
Une autre solution, en passant par les API's interrogeant la base de registre :

' Dans un module
Private Declare Function RegOpenKey _
Lib "advapi32" Alias "RegOpenKeyA" _
( _
ByVal hKey As Long, _
ByVal lpSubKey As String, _
phkResult As Long _
) As Long

Private Declare Function RegQueryValueEx _
Lib "advapi32" Alias "RegQueryValueExA" _
( _
ByVal hKey As Long, _
ByVal lpValueName As String, _
ByVal lpReserved As Long, _
lpType As Long, _
lpData As Any, _
lpcbData As Long _
) As Long

Public Function GetString(hKey As Long, strPath As String, strValue As String) As String
Dim Keyhand As Long, lResult As Long
Dim strBuf As String * 255

RegOpenKey hKey, strPath, Keyhand
lResult = RegQueryValueEx(Keyhand, strValue, 0&, 0&, ByVal strBuf, 255)
If lResult = 0 Then GetString = Split(strBuf, Chr$(0))(0)

End Function

' Dans ta form
Private Sub Form_Load()
Dim s As String
s = GetString(&H80000000, "Excel.Application\CLSID", "")
s = GetString(&H80000000, "CLSID\" & s & "\LocalServer32", "")
s = Trim(Left$(s, InStr(1, s, "/") - 1))
MsgBox s
End Sub


Explik :
d'abord on lit la CLSID de l'appli puis on va lire la localisation de l'exe.
le trim .... est là pour zapper les "/automation" et autres paramètres de lancement pour ne récupérer que le chemin.

Bien sùr, puisque la CLSID des applis Windows est toujours la même, dans le form_lod on peut juste mettre :

Private Sub Form_Load()
Dim s As String
s = GetString(HKEY_CLASSES_ROOT, "CLSID\{00024500-0000-0000-C000-000000000046}\LocalServer32", "")
s = Trim(Left$(s, InStr(1, s, "/") - 1))
MsgBox s
End Sub


Mais bon, on ne sait jamais et ça prend pas beaucoup plus de temps.

Et ça, c'est rapide, ça marche avec VB, VBA et VB.NET, sous win9x et winXP. J'ai testé mais si prob, j'attend les critiques.

Cordialement, CanisLupus

lundi 13 décembre 2004 à 20:39:00 | Re : recherche du fichier excel.exe

barley

salut canislupus, je viens d'essayer ta technique, ca me parait tres bien, je n'en suis pas encore a ce niveau
Par contre, est ce que c'est normal de voir le chemin sous forme "raccourci", exemple:

C:\PROGRA~1\MICROS~4\Office\EXCEL.EXE

et surtout, est ce que ceci est exploitable après... si oui pas de problème
moi je dis bravo...
lundi 13 décembre 2004 à 20:40:28 | Re : recherche du fichier excel.exe

barley

Je viens d'essayer en rajoutant shell (s), ca marche, donc je m'incline...
lol
allez, bonne prog a vous
lundi 13 décembre 2004 à 23:09:33 | Re : recherche du fichier excel.exe

CanisLupus

Membre Club Administrateur CodeS-SourceS
G même envie de rajouter qu'on peut faire ça avec Word.Application, Access.Application et Powerpoint.Application.
Pour les autres applis, je vous laisse découvrir.
Faut juste aller se balader, avec précaution, dans la registry (HKEY_CLASSES_ROOT pour cet exemple) .

Pour la forme et pour la sécurité, je dois signaler que toutes modifs dans la registry mal maitrisées peuvent provoquer un plantage grave du système. S'il ne s'agit que d'un get (lecture) pas de problème mais en cas de Set (écriture), si vous n'êtes pas sûr, sauvegardez votre registry avant.

Cordialement, CanisLupus

mardi 14 décembre 2004 à 13:35:34 | Re : recherche du fichier excel.exe

domsig

je vais peut-être dire une bêtise mais..........

dim excel_object as object
Set excel_object = CreateObject("excel.application")
If IsNull(excel_object) Then
msgbox("pas trouvé")
else
msgbox(excel_object.path)
'on peut aussi tester la version d'excel trouvée
msgbox(excel_object.version)
end if

voilà voilà voilà.....
mardi 14 décembre 2004 à 21:19:05 | Re : recherche du fichier excel.exe

CanisLupus

Membre Club Administrateur CodeS-SourceS
Tu ne dis pas une bêtise domsig c'est plus court à coder mais plus long en exec et faut pas oublier un tit set excel_object = nothing à la fin (juste histoire de libérer la mémoire).

Je m'explique, mon code va voir directement dans la registry et le tien crée un objet donc plus lent.

A chacun sa méthode.

Cordialement, CanisLupus



Cette discussion est classée dans : fichier, exe, excel, recherche


Répondre à ce message

Sujets en rapport avec ce message

Recherche de chemin [ par gagagogos ] Ayant créé un SETUP sous VB5 contenant un exe et un fichier d'aide (fichier d'aide accéssible depuis l'EXE), comment rendre le fichier d'aide accéssib Recherche dans un fichier excel [ par Nixo ] Voilà , je shouaite executer un recherche par "site" (une certaine colonne du document excel) dans un fichier excel mais je ne connais pas les equiva Excel: récup la valeur dune cellule d1 fichier et recherche cette valeur dans un autre fichier [ par Willis ] Bonjour,J'ai quelques soucis pour faire un ptit prog...Je voudrais faire une fonction sans un XLSn°1 qui : 1- En entrée le chemin d'un XLSn°2 2- Réc recherche d'un fichier excel [ par roblemechant ] Salut!j'aimerai ouvrir un fichier excel avec vba en ne connaissant qu'un mot du nom du fichier en passant par la recherche de fichier.merci d'avance recherche contenu textbox dans une feuille excel. [ par ephores ] Bonjour,J'ai beau chercher de partout sur les Object Excel mais je ne trouve pas ..Vioila j'ai une liste de fichier excel a laquel il faut que je cher Excel [ par djief ] SAlut J'ai besoin de faire une recherche dans un fichier excel à partir de vb.61) je ne dois pas ouvrir l'application.2) je dois recherche une string Excel : recherche fichier avec %userprofile% [ par fraisa ] je souhaite ouvrir un modele excel mais xp utilise un nom de profile qui change avec chaque utilisateur (les modeles sont dans mes documents) je n'arr Recherche dans Excel à l'aide de macro VBA ou autre [ par aamireault ] J'ai un fichier Excel... Le fichier a plein de sous titre, il y a des lignes vides, des cellules vides, des commentaires, etc.En fait le fichier est u macro de recherche et d'ouverture de fichier excel [ par flolf ] Bonjour a tousje suis tout nouveau tout beau (ca c'est moin sur par contre) en VBet forcement je rencontre des problemesj'ai un fchier excelA vierge. VBA Excel - Recherche de fichiers [ par econs ] Bonjour à toutes et tous. Je possède un dossier contenant un certain nombre de fichiers : -   Un fichier Visio    (*.vsd) -   Un fichier Excel   


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,388 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales