wake-up-neo.com

Wie öffnen Sie eine bestimmte Excel-Datei mit einem Stapelskript und Befehlszeilenargumenten?

Ich habe eine Excel-Tabelle erstellt, die Daten von einem Server mithilfe eines RTD-Feeds entnimmt und verarbeitet. Ich möchte, dass die Excel-Datei während des Computerstarts automatisch geöffnet wird. Ich habe beschlossen, ein Batch-Skript zu schreiben, das die Excel-Datei öffnet, und dieses Batch-Skript in den Startordner des Computers zu legen. 

Das Problem, auf das ich stoße, bezieht sich auf das Batch-Skript. Der RTD-Feed funktioniert nicht, wenn ich die Standardverknüpfung für Excel verwende. Stattdessen muss ich eine Verknüpfung mit der folgenden Zielzeile verwenden:

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

Ich kann die Datei mit dieser Befehlszeile öffnen 

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

ich kann eine Datei jedoch nicht mit dem folgenden Bash-Befehl öffnen 

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

Wenn ich es mit dem ersten Bash-Skript öffne, funktioniert der RTD-Feed nicht. Wenn ich versuche, das zweite Skript auszuführen, wird das Bash-Skript nicht ausgeführt. 

Wie schreibe ich ein Bash-Skript, das Befehlszeilenargumente für das Startprogramm akzeptiert? 

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

Nehmen wir an, Sie nannten es "MyBatch.bat" und nennen es dann so:

MyBatch.bat Hello/World1

Verwenden Sie ein Leerzeichen "", um die Parameter ..__ zu trennen. Verwenden Sie den Schrägstrich "/" anstelle von Leerzeichen für Parameter mit Leerzeichen.

Falls Ihnen die Zeichenfolge nicht gefällt, können Sie dies (in einer * .bat-Datei) auch tun: 
start Excel "MyWorkbook.xlsm" /e/%param1%/%param2%/%param3%.....

Falls Sie mehrere Excel-Instanzen öffnen müssen:

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

Zuerst würde ich empfehlen, eine geplante Aufgabe über dem Startordner zu verwenden (konsistentes Verhalten). Trigger beim Login oder wie auch immer du es brauchst und führe powershell -ExecutionPolicy Bypass -NoProfile -File 'thing.ps1' aus. Es sieht so aus, als ob Sie die Argumente für das Excel-Exe nicht ordnungsgemäß übergeben.

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