web-dev-qa-db-fra.com

Comment ouvrir un fichier Excel spécifique avec un script de traitement par lots et des arguments de ligne de commande?

J'ai conçu une feuille de calcul Excel qui prend en charge les données d'un serveur à l'aide d'un flux RTD et les traite. Je veux que le fichier Excel s'ouvre automatiquement au démarrage de l'ordinateur. Pour ce faire, j'ai décidé d'écrire un script de traitement par lots qui ouvre le fichier Excel, puis de le placer dans le dossier de démarrage de l'ordinateur. 

Le problème que je rencontre concerne le script batch. Le flux RTD ne fonctionne pas si j'utilise le raccourci par défaut pour Excel. Au lieu de cela, je dois utiliser un raccourci qui a la ligne cible suivante:

 "C:\Program Files (x86)\Microsoft Office\root\Office16\Excel.EXE" /a "CompanyExcelAddin.CompanyFunctions"

Je peux ouvrir le fichier en utilisant cette ligne de commande 

start `"C:\Program Files (x86)\Microsoft Office\root\Office16\Excel.EXE" "C:\...\filename.xlsm"`

mais je ne suis pas capable d'ouvrir un fichier en utilisant la commande bash suivante 

start "C:\Program Files (x86)\Microsoft Office\root\Office16\Excel.EXE" /a "CompanyExcelAddin.CompanyFunctions" "C:\...\filename.xlsm"

Si je l'ouvre à l'aide du premier script bash, le flux RTD ne fonctionne pas. Si j'essaie d'exécuter le second script, le script bash ne s'exécute pas. 

Comment écrire un script bash qui prend des arguments en ligne de commande pour le programme de démarrage? 

3
dantonio
@echo off
set params=%*
start Excel "MyWorkbook.xlsm" /e/%params%

Supposons que vous l'appeliez "MyBatch.bat", puis appelez-le ainsi:

MyBatch.bat Hello/World1

Utilisez un espace "" pour séparer les paramètres . Utilisez une barre oblique "/" au lieu de l’espace pour les paramètres avec des espaces.

Si vous n'aimez pas la chaîne, je pense que vous pouvez également le faire (dans un fichier * .bat): 
start Excel "MyWorkbook.xlsm" /e/%param1%/%param2%/%param3%.....

Si vous devez ouvrir plusieurs instances Excel:

@echo off
set params=%*
for %%C in (%params%) do (
    start Excel "MyWorkbook.xlsm" /e/%%C
)
2
Sergio Muriel

Tout d'abord, je vous recommande d'utiliser une tâche planifiée sur le dossier de démarrage (comportement cohérent). Déclenchez à la connexion, ou comme vous en avez besoin, et exécutez powershell -ExecutionPolicy Bypass -NoProfile -File 'thing.ps1'. Il semble que vous passiez peut-être les arguments hors d'usage pour l'exe Excel.

$EXE = "${env:ProgramFiles(x86)}\Microsoft Office\root\Office16\Excel.EXE"
& $EXE 'C:\...\filename.xlsm' /a 'CompanyExcelAddin.CompanyFunctions'
0
TheIncorrigible1