如何使用批处理脚本和命令行参数打开特定的Excel文件?

时间:2017-08-01 16:14:25

标签: excel windows batch-file

我设计了一个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"

如果我使用第一个bash脚本打开它,RTD源不起作用。如果我尝试运行第二个脚本,则bash脚本不会运行。

如何编写一个为启动程序获取命令行参数的bash脚本?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

首先,我建议在启动文件夹上使用计划任务(一致行为)。登录时触发,或者您需要它,然后执行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'