如何通过cmd按特定顺序启动Excel文件?

如何通过cmd按特定顺序启动Excel文件?,excel,batch-file,cmd,Excel,Batch File,Cmd,我有2张excel表格,使用cmd打开它们。使用了3个cmd 我们需要sheet1(OPENEXCEL1.bat) 第二次调用sheet2(OPENEXCEL2.bat) 第三个作为主控调用前2个cmd start cmd /k call "OPENEXCEL1.bat" start cmd /k call "OPENEXCEL2.bat" 目前,两个excel工作表通过VBA连接,其中sheet2从sheet1获取数据。如果在表2之前先打开表1,则数据传输正常。但是,如果在sheet1之前打

我有2张excel表格,使用cmd打开它们。使用了3个cmd

我们需要sheet1(OPENEXCEL1.bat)

第二次调用sheet2(OPENEXCEL2.bat)

第三个作为主控调用前2个cmd

start cmd /k call "OPENEXCEL1.bat"
start cmd /k call "OPENEXCEL2.bat"
目前,两个excel工作表通过VBA连接,其中sheet2从sheet1获取数据。如果在表2之前先打开表1,则数据传输正常。但是,如果在sheet1之前打开sheet2,则会发生错误

当我使用这个命令时,我注意到Excel工作表打开的顺序有时是不同的。这意味着,有时表1首先打开不会导致任何问题,或者有时表2首先打开会导致前面所述的问题


考虑到我是cmd新手,有没有一个命令可以让我告诉cmd我想先打开sheet1,然后再打开sheet2?

正如@Stephan所说,您的脚本有一些问题。您只能使用1脚本来修复问题

OpenExcel.bat


这将打开
Bar.xlsx
,等待5秒,然后打开
Baz.xlsx

[编辑:为了使其正常工作,请在会话期间至少先启动Excel一次,并可能在开始打开实际文件之前给它几秒钟的超时时间]

我刚刚找到了一种向Excel“解释”的方法,以非常特定的顺序打开一组Excel文件,而不使用超时(更快!),使用start命令,只需将初始文件或组或文件的请求行翻倍(无需将最后一个文件翻倍),我希望这会有所帮助!:

start "" "C:\Users\Desktop\Sheet1.xlsx"
start "" "C:\Users\Desktop\Sheet1.xlsx"

start"" "C:\Users\Desktop\Sheet2.xlsx"
编辑:或者,首先打开Excel如果在系统会话期间尚未打开Excel,它将为您提供对订单的更多控制:

start "" "C:\Program Files\Microsoft Office\root\Office16\EXCEL.EXE"
timeout 1
start "" "C:\Users\Desktop\Sheet1.xlsx"
start "" "C:\Users\Desktop\Sheet1.xlsx"

start"" "C:\Users\Desktop\Sheet2.xlsx"

与其说是逻辑问题,不如说是时间问题。在两个
start
命令之间使用
timeout 5
,这会给Excel一些时间在请求第二个命令之前打开第一个命令。(我知道5秒听起来很长,但你肯定想稳妥一点。)只是出于好奇:为什么你用三个批处理文件而不是一个?为什么
/k
?为什么不只打开
“C:\Users\Desktop\Sheet1.xlsx”
?这两个excel文件使用不同版本的excel,我希望它们在不同的实例中使用excel 07和10。当我尝试将这两个命令都放在一个cmd中时,它总是默认为07。这就是为什么我把它分开了。超时也行。谢谢
@echo off

"D:\Foo\Bar.xlsx"
timeout /t 5
"D:\Foo\Baz.xlsx"
start "" "C:\Users\Desktop\Sheet1.xlsx"
start "" "C:\Users\Desktop\Sheet1.xlsx"

start"" "C:\Users\Desktop\Sheet2.xlsx"
start "" "C:\Program Files\Microsoft Office\root\Office16\EXCEL.EXE"
timeout 1
start "" "C:\Users\Desktop\Sheet1.xlsx"
start "" "C:\Users\Desktop\Sheet1.xlsx"

start"" "C:\Users\Desktop\Sheet2.xlsx"