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

问题描述 投票:0回答:3

我设计了一个 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 源将不起作用。如果我尝试运行第二个脚本,批处理脚本不会运行。

如何编写一个批处理脚本来获取启动程序的命令行参数?

excel windows batch-file
3个回答
11
投票
@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
投票

首先,我建议在启动文件夹上使用计划任务(一致的行为)。在登录时触发,或者根据您的需要触发,然后执行

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'

0
投票

计划任务是一个陷阱,其中包含一些水纹消息。真的需要重新设计!!

© www.soinside.com 2019 - 2024. All rights reserved.