【问题标题】:Running macros from python on a server在服务器上从 python 运行宏
【发布时间】: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


【解决方案1】:

这个link 会帮助你一些。它描述了如何从 Windows 任务调度程序运行 vbs 和 excel 宏。除此之外,尝试使用 vbs 而不是 python 来查找是否是 python 问题,或者尝试不同的用户来运行计划任务,或者在保存时尝试提供不同的文件名,然后根据需要重命名。

【讨论】:

    【解决方案2】:

    显然问题与 Windows 相关,这是解决方案

    link

    【讨论】:

      猜你喜欢
      • 2017-02-21
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-20
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多