【发布时间】:2015-09-10 06:51:57
【问题描述】:
我有以下代码来运行一个宏,当我在 python 中运行它时,它的效果非常好
try:
xl = win32com.client.Dispatch("Excel.Application")
xlsPath = os.path.expanduser("C:/Users/hidden/Desktop/scripts/someFile.xlsm")
wb = xl.Workbooks.Open(Filename=xlsPath)
xl.Application.Run("GetData")
xl.DisplayAlerts = 0
wb.Save()
xl.Quit()
del xl
except Exception:
xl.Quit()
现在,脚本远不止这些,我需要它作为计划任务(或类似任务)每天在服务器上运行一次。我创建了一个计划任务,无论用户是否登录,它都可以正常工作,并且也可以按预期工作,但是在它执行宏的时候,它只是抛出一个异常并且没有任何反应,就好像它没有完全启动宏。我可以确认它在打开工作簿之前一直执行
我安排的任务是一个 .bat 文件,其中包含以下内容,并且正如预期的那样,脚本中所需的所有路径都是绝对路径
@echo off
python C:\Users\hidden\Desktop\scripts\automateMacros.py %*
另外,当我双击 bat 文件时,它按预期工作,但不会按计划任务工作,但我可以确认它已被执行
编辑: 异常错误:
(-2147352567, '发生异常。', (0, u'Microsoft Excel', u"Microsoft Excel 无法访问文件'C://Users/hidden/Desktop/scripts/someFile.xlsm'。有几个可能的原因:\n\n\u2022 文件名或路径不存在。\n\u2022 文件正被另一个程序使用。\n\u2022 您尝试保存的工作簿与当前工作簿同名打开工作簿。", u'xlmain11.chm', 0, -2146827284), None)
我只在 if 语句表明它存在之后打开文件,它是第一个访问的工作簿。另请注意,如果我再次立即运行批处理脚本,它会按预期工作
【问题讨论】:
-
尝试在批处理文件中给出python的完整路径。例如:
C:\Python27\Python.exe C:\Users\hidden\Desktop\scripts\automateMacros.py %* -
嘿,pss,我做到了,但仍然将错误写入日志文件;(
-
能否请您指出错误?
-
对不起,我以为我已经添加了,现在看看编辑 =]
-
我认为您的计划任务有问题。您能否确认该任务是在某个特定时间后执行的。例如:问题可能出在您的任务第一次执行时。也许操作系统仍在写入 excel 文件或尚未完全关闭它。在此期间,您的任务再次执行,因此出现错误。尝试执行具有较大时间差异的任务。路径好吗?在错误日志
C://Users/hidden/Desktop/scripts/someFile.xlsm中有\` &`.. 也许这就是问题
标签: python python-2.7 excel vba