我设计了一个 Excel 电子表格,它使用 RTD 源从服务器获取数据并进行处理。我希望excel文件在计算机启动时自动打开。我决定执行此操作的方法是编写一个打开 Excel 文件的批处理脚本,然后将该批处理脚本放入计算机启动文件夹中。
我遇到的问题与批处理脚本有关。如果我使用 Excel 的默认快捷方式,RTD 提要将不起作用。相反,我必须使用具有以下目标行的快捷方式:
"C:\Program Files (x86)\Microsoft Office\root\Office16\EXCEL.EXE" /a "CompanyExcelAddin.CompanyFunctions"
我可以使用此命令行打开文件
start `"C:\Program Files (x86)\Microsoft Office\root\Office16\EXCEL.EXE" "C:\...\filename.xlsm"`
但我无法使用以下 bash 命令打开文件
start "C:\Program Files (x86)\Microsoft Office\root\Office16\EXCEL.EXE" /a "CompanyExcelAddin.CompanyFunctions" "C:\...\filename.xlsm"
如果我使用第一个批处理脚本打开它,RTD 源将不起作用。如果我尝试运行第二个脚本,批处理脚本不会运行。
如何编写一个批处理脚本来获取启动程序的命令行参数?
@echo off
set params=%*
start excel "MyWorkbook.xlsm" /e/%params%
假设您将其命名为“MyBatch.bat”,那么您可以这样称呼它:
MyBatch.bat Hello/World1
使用空格“ ”分隔参数。 带空格的参数使用斜杠“/”代替空格。
如果您不喜欢该字符串,我相信您也可以这样做(在 *.bat 文件中):
start excel "MyWorkbook.xlsm" /e/%param1%/%param2%/%param3%.....
如果您需要打开多个 Excel 实例:
@echo off
set params=%*
for %%C in (%params%) do (
start excel "MyWorkbook.xlsm" /e/%%C
)
首先,我建议在启动文件夹上使用计划任务(一致的行为)。在登录时触发,或者根据您的需要触发,然后执行
powershell -ExecutionPolicy Bypass -NoProfile -File 'thing.ps1'
。看起来您可能没有按顺序传递 Excel exe 的参数。
$EXE = "${env:ProgramFiles(x86)}\Microsoft Office\root\Office16\EXCEL.EXE"
& $EXE 'C:\...\filename.xlsm' /a 'CompanyExcelAddin.CompanyFunctions'
计划任务是一个陷阱,其中包含一些水纹消息。真的需要重新设计!!