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?
@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
)
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'