打开.xlsm文件无法通过.bat文件打开(cmd提示符)

时间:2018-01-30 18:51:27

标签: excel windows vba batch-file cmd

我最近开始遇到一系列.bat文件的问题,我计划通过Windows 10中的"任务计划程序" 打开这些文件。这些任务和批处理文件完美运行超过一年,现在他们给了我适合。

以下是我在记事本中创建的批处理文件中的代码,并保存为.bat文件。

  @echo
    cd C:\Users\JonC\Desktop\Macros\IorpiaSCHProgram
    IorpiaSCHSet1.xlsm
    cd C:\Users\JonC\Desktop\Macros\IorpiaSCHProgram
    IorpiaSCHSet2.xlsm
    cd C:\Users\JonC\Desktop\Macros\IorpiaSCHProgram
    IorpiaSCHSet3.xlsm
    cd C:\Users\JonC\Desktop\Macros\IorpiaSCHProgram
    IorpiaSCHSet4.xlsm
    cd C:\Users\JonC\Desktop\Macros\IorpiaSCHProgram
    IorpiaSCHSet5.xlsm
    cd C:\Users\JonC\Desktop\Macros\IorpiaSCHProgram
    IorpiaSCHSet6.xlsm
    cd C:\Users\JonC\Desktop\Macros\IorpiaSCHProgram
    IorpiaSCHSet7.xlsm
    cd C:\Users\JonC\Desktop\Macros\IorpiaSCHProgram
    IorpiaSCHSet8.xlsm

第一个.xlsm文件应该打开,一些自动宏将运行,excel将关闭(如宏的VBA中所写)。在excel关闭时,下一个命令应该执行并打开下一个.xlsm文件。正如我所说,这种情况多年来都很有效。

我现在将获得一个只是坐在那里并且不打开文件的命令(可能是第二个文件,可能是第7个文件)。第一个文件将始终打开,但在此之后它会随机发生,因为文件或命令会卡住并且根本无法打开。

我可以使用一些更好的代码来强制打开文件吗?以管理员身份运行没有帮助。更改所有文件的位置没有帮助。重建文件没有帮助。

我能够安排一个打开这些批处理文件的任务并见证它们100%完成,但它永远不会失败,当我在半夜安排时,我醒来一个不完整的批处理文件,挂在命令上。

我也试过以下命令无济于事......

Start \wait \k "C:\Users\Bob\Desktop\Macros\Myfile.xlsm"

C:\Users\Bob\Desktop\Macros\Myfile.xlsm

非常感谢任何帮助或指导...

2 个答案:

答案 0 :(得分:0)

这是一个古老的经典VBScript方法。我选择它,因为我认为你将从Excel VBA开始最短的时间。 创建一个名为something.vbs的文件并将其放入其中:

OpenWorkbook "C:\Users\JonC\Desktop\Macros\IorpiaSCHProgram\IorpiaSCHSet1.xlsm"
OpenWorkbook "C:\Users\JonC\Desktop\Macros\IorpiaSCHProgram\IorpiaSCHSet2.xlsm"

Sub OpenWorkbook(Path)
    Dim Excel, wb
    Set Excel = CreateObject("Excel.Application")
    Excel.Visible = True
    Set wb = Excel.Workbooks.Open(Path)

    Set Excel = Nothing
    Set wb = Nothing
End Sub

在你的bat文件中,将其称为:

cscript something.vbs

答案 1 :(得分:0)

我试图重新创建这个问题,但在我的机器上它完美无缺。

但是,此解决方法可能对您有所帮助:

@ECHO OFF

CD C:\Users\JonC\Desktop\Macros\IorpiaSCHProgram

START /MIN /WAIT CMD /C IorpiaSCHSet1.xlsm
START /MIN /WAIT CMD /C IorpiaSCHSet2.xlsm
START /MIN /WAIT CMD /C IorpiaSCHSet3.xlsm
START /MIN /WAIT CMD /C IorpiaSCHSet4.xlsm
START /MIN /WAIT CMD /C IorpiaSCHSet5.xlsm
START /MIN /WAIT CMD /C IorpiaSCHSet6.xlsm
START /MIN /WAIT CMD /C IorpiaSCHSet7.xlsm
START /MIN /WAIT CMD /C IorpiaSCHSet8.xlsm

我无法确保这会有效,但是当第一个.xlsm文件始终打开时,新环境可能会对其他.xlsm文件执行相同的操作。

这是否解决了您的问题,请尝试在虚拟机中重新创建此问题。也许问题与某些更新,另一个程序或Windows中的某些内容有关。

编辑:

如果它还没有工作,请试一试:

@ECHO OFF

CD C:\Users\JonC\Desktop\Macros\IorpiaSCHProgram

SET n=1

:next_file
IF %n% GTR 8 EXIT
IorpiaSCHSet%n%.xlsm
SET /A "n=%n%+1"
CALL :check_status
GOTO :next_file


:check_status
TASKLIST /FI "IMAGENAME EQ EXCEL.EXE" |FIND ":" > nul
IF ERRORLEVEL 1 TIMEOUT /T 1 /NOBREAK && GOTO check_status
EXIT /B

或者这个:

@ECHO OFF

CD C:\Users\JonC\Desktop\Macros\IorpiaSCHProgram

START /MIN CMD /C IorpiaSCHSet1.xlsm
TIMEOUT /T n /NOBREAK > nul
START /MIN CMD /C IorpiaSCHSet2.xlsm
TIMEOUT /T n /NOBREAK > nul
START /MIN CMD /C IorpiaSCHSet3.xlsm
TIMEOUT /T n /NOBREAK > nul
START /MIN CMD /C IorpiaSCHSet4.xlsm
TIMEOUT /T n /NOBREAK > nul
START /MIN CMD /C IorpiaSCHSet5.xlsm
TIMEOUT /T n /NOBREAK > nul
START /MIN CMD /C IorpiaSCHSet6.xlsm
TIMEOUT /T n /NOBREAK > nul
START /MIN CMD /C IorpiaSCHSet7.xlsm
TIMEOUT /T n /NOBREAK > nul
START /MIN CMD /C IorpiaSCHSet8.xlsm

n替换为相应宏所需的时间(以秒为单位)。

如果其中一个解决方案有效,但CMD窗口在最后一个宏完成后仍处于打开状态,请在最后添加TASKKILL /F /IM cmd.exe