Bonjour;
Je souhaite ouvrir une base Access par programmation. Pour cela, j'utilise la fonction suivante :
La variable cmdline$ contient le chemin+nom de la base Access que je souhate ouvrir, par exemple : "C:\Program Files\Microsoft Office\2000\Office\MSACCESS.exe C:\projets\pgi\BaseSAV\technjp.mdb"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 Public Sub ExecCmd(cmdline$) Dim proc As PROCESS_INFORMATION Dim start As STARTUPINFO Dim ReturnValue As Integer ' Initialize the STARTUPINFO structure: start.cb = Len(start) ' Start the shelled application: ReturnValue = CreateProcessA(0&, cmdline$, 0&, 0&, 1&, _ NORMAL_PRIORITY_CLASS, 0&, 0&, start, proc) ' Wait for the shelled application to finish: Do ReturnValue = WaitForSingleObject(proc.hProcess, 0) DoEvents Loop Until ReturnValue <> 258 ReturnValue = CloseHandle(proc.hProcess) End Sub
Avec cet exemple, ça fonctionne.
Par contre, si le nom de ma base contient des blancs (espaces), ça ne fonctionne plus. J'ai essayé par exemple :
"C:\Program Files\Microsoft Office\2000\Office\MSACCESS.exe C:\projets\pgi\BaseSAV\PGI BES_RES 2002.mdb" : plantage (il recherche la base PGI.mdb)
"C:\Program Files\Microsoft Office\2000\Office\MSACCESS.exe C:\projets\pgi\BaseSAV\[PGI BES_RES 2002.mdb]" : plantage
"C:\Program Files\Microsoft Office\2000\Office\MSACCESS.exe C:\projets\pgi\BaseSAV\[PGI BES_RES 2002].mdb" : plantage
"C:\Program Files\Microsoft Office\2000\Office\MSACCESS.exe" "C:\projets\pgi\BaseSAV\PGI BES_RES 2002.mdb" : pas de plantage mais rien ne s'exécute
Si je crée un raccourci sur le bureau avec le chemin "C:\Program Files\Microsoft Office\2000\Office\MSACCESS.EXE" "C:\projets\pgi\BaseSAV\PGI BES_RES 2002.mdb", ça fonctionne ...
Avez-vous une idée pour résoudre mon problème de nom de base Access contenant des blancs ? Est-ce le ExecCmd qui pose problème ?
Je vous en remercie par avance.
Bonne journée.
Partager