windows任务打开excel(如果未打开),然后打开工作表(如果未打开)
我在Windows7任务工具中创建了一个任务。这让我想起了这个月的15号,打开了一个excel工作簿,我应该查看并更新它。方便 问题是,在这个弹出窗口的时候,我大约有60%的机会已经打开了Excel,我想我甚至有一小部分机会打开了工作簿。那么结果就一点也不优雅了。任务试图打开另一份Excel副本,这会导致只读访问,工作簿本身也是如此 在SCHTASKS或批处理文件(或您推荐的任何其他方便的Windows工具)中,是否有方法首先检查Excel是否打开,然后切换到它,而不是打开Excel的第二个副本?我看到了一个关于在.BAT文件中使用任务列表检查其是否打开的说明:windows任务打开excel(如果未打开),然后打开工作表(如果未打开),windows,excel,batch-file,windows-task-scheduler,Windows,Excel,Batch File,Windows Task Scheduler,我在Windows7任务工具中创建了一个任务。这让我想起了这个月的15号,打开了一个excel工作簿,我应该查看并更新它。方便 问题是,在这个弹出窗口的时候,我大约有60%的机会已经打开了Excel,我想我甚至有一小部分机会打开了工作簿。那么结果就一点也不优雅了。任务试图打开另一份Excel副本,这会导致只读访问,工作簿本身也是如此 在SCHTASKS或批处理文件(或您推荐的任何其他方便的Windows工具)中,是否有方法首先检查Excel是否打开,然后切换到它,而不是打开Excel的第二个副本
TASKLIST /FI "IMAGENAME eq EXCEL.EXE" 2>NUL | FIND /I /N "EXCEL.EXE">NUL
IF "%ERRORLEVEL%" EQ "0" START excel "C:\Project4\MonthlyTracking.xlsx"
但是如果批处理文件打开,我不知道该如何反应。在批处理文件中,我看不到一种方法可以告诉已经运行的excel进程打开一个文件
非常感谢 不要尝试用文件启动Excel,只启动文件:
"C:\Project4\MonthlyTracking.xlsx"
这将打开excel,如果它没有与该文件一起运行,
它将在运行的excel中打开文件,
如果它已经打开,它将给您一个错误-您可以使用:
"C:\Project4\MonthlyTracking.xlsx" 2>nul
if errorlevel neq 0 echo file already opened
您可以让Windows ShellExecute功能逻辑使用默认关联程序(在本例中为Excel)启动文件,如何执行?只是尝试直接运行文件,而不是将文件作为应用程序的参数传递
TASKLIST /FI "IMAGENAME eq EXCEL.EXE" 2>NUL | FIND /I "EXCEL">NUL && (
START /B "ShellExecute Excel File" "C:\Project4\MonthlyTracking.xlsx"
)
谢谢据我所知,这与斯蒂芬的答案大致相同。你介绍ShellExecute,我对此不太了解。这可能会提供一些优势,但他的工作似乎是为了我想要的没有那个。。。直到最后一个技巧问题(见这里)。@MarkGoldfain:文件类型和可执行文件之间的“转换”是通过
assoc
(该文件是什么文件类型)和ftype
(该文件类型使用什么可执行文件)完成的。试试assoc.xlsx
(这会给我Excel.Sheet.12
)。然后键入“ftype Excel.Sheet.12`(这给了我”C:\Program Files(x86)\Microsoft Office\Office14\Excel.EXE)/dde
)@MarkGoldfain:我不知道如何从批处理中分辨应用程序,该怎么做。相反,你可以使用msg%username%“每月跟踪已经打开-请不要忘记更新它”
(如果%errorlevel%eqs 32…)