Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

cmd.exe - Lancer excel avec un paramètre

2 réponses
Avatar
Franck
Bonjour,
j'ai une macro sur l'OPEN de mon classeur qui me permet de r=E9cuperer
les param=E8tres passer =E0 la commande pour l'ouvrir.

N=E9anmoins, je n'arrive pas =E0 lancer mon classeur en lui passant comme
param=E8tre un chemin d'acc=E8s =E0 un fichier xml.

En gros ceci:
Excel.exe /CheminDeMonXml CheminDeMonClasseur

En fait, il me retourne une erreur car il tente de d=E9composer le
chemin d'acc=E8s du XML, je dois oublier des " ou des \ ou je ne sais
quoi d'autre.

Merci de votre aide. :)

2 réponses

Avatar
Alain CROS
Bonjour.

Il y a effectivement un problème avec les espaces dans le nom du fichier.

Une solution de substitution consiste a remplacer dans la ligne de commande les espaces par un caractère non autorisé dans le nom
d'un fichier tel que le ?.

La ligne de commande s'écrira :
"EXCEL.EXE" /eC:Premier?RepSecond?RepMon?Fichier.xml CheminDeMonClasseur

Et dans le module ThisWorkbook :

Private Declare Function GetCommandLine$ Lib "Kernel32" Alias "GetCommandLineA" ()

Private Sub Workbook_Open()
Dim CmdLine$, Pos1&
CmdLine = GetCommandLine
Pos1 = InStr(CmdLine, ThisWorkbook.FullName)
If Pos1 <> 0& Then CmdLine = Mid$(CmdLine, 1&, Pos1 - 1&) Else Exit Sub
If Right(CmdLine, 1&) = """" Then Pos1 = 2& Else Pos1 = 1&
CmdLine = Mid$(CmdLine, 1&, Len(CmdLine) - Pos1)
CmdLine = Mid$(CmdLine, InStr(1&, CmdLine, " /e") + 3&, Len(CmdLine) - 1&)
MsgBox Application.Substitute(CmdLine, "?", " ")
End Sub 'AC

Alain CROS

"Franck" a écrit dans le message de news:
Bonjour,
j'ai une macro sur l'OPEN de mon classeur qui me permet de récuperer
les paramètres passer à la commande pour l'ouvrir.

Néanmoins, je n'arrive pas à lancer mon classeur en lui passant comme
paramètre un chemin d'accès à un fichier xml.

En gros ceci:
Excel.exe /CheminDeMonXml CheminDeMonClasseur

En fait, il me retourne une erreur car il tente de décomposer le
chemin d'accès du XML, je dois oublier des " ou des ou je ne sais
quoi d'autre.

Merci de votre aide. :)
Avatar
Franck
L'idée est bonne.
Cependant, mon problème réside dans le fait que je cherche à
effectuer cette action par un double click sur le fichier XML
En gros, qd le user double click sur le XML, ca load le fichier
XLS/XLT, ca récupère le chemin du XML et ca le load dedans...

Ta solution marche pas dans ce cas... snif...

Alain CROS wrote:
Bonjour.

Il y a effectivement un problème avec les espaces dans le nom du
fichier.


Une solution de substitution consiste a remplacer dans la ligne de
commande les espaces par un caractère non autorisé dans le nom

d'un fichier tel que le ?.

La ligne de commande s'écrira :
"EXCEL.EXE" /eC:Premier?RepSecond?RepMon?Fichier.xml
CheminDeMonClasseur


Et dans le module ThisWorkbook :

Private Declare Function GetCommandLine$ Lib "Kernel32" Alias
"GetCommandLineA" ()


Private Sub Workbook_Open()
Dim CmdLine$, Pos1&
CmdLine = GetCommandLine
Pos1 = InStr(CmdLine, ThisWorkbook.FullName)
If Pos1 <> 0& Then CmdLine = Mid$(CmdLine, 1&, Pos1 - 1&) Else
Exit Sub

If Right(CmdLine, 1&) = """" Then Pos1 = 2& Else Pos1 = 1&
CmdLine = Mid$(CmdLine, 1&, Len(CmdLine) - Pos1)
CmdLine = Mid$(CmdLine, InStr(1&, CmdLine, " /e") + 3&,
Len(CmdLine) - 1&)

MsgBox Application.Substitute(CmdLine, "?", " ")
End Sub 'AC

Alain CROS

"Franck" a écrit dans le message de news:


Bonjour,
j'ai une macro sur l'OPEN de mon classeur qui me permet de récuperer
les paramètres passer à la commande pour l'ouvrir.

Néanmoins, je n'arrive pas à lancer mon classeur en lui passant
comme

paramètre un chemin d'accès à un fichier xml.

En gros ceci:
Excel.exe /CheminDeMonXml CheminDeMonClasseur

En fait, il me retourne une erreur car il tente de décomposer le
chemin d'accès du XML, je dois oublier des " ou des ou je ne sais
quoi d'autre.

Merci de votre aide. :)