python - 在python中运行excel宏并保存结果

标签 python excel python-2.7 pywin32

我有两个文件,即“macro.xlms”和“data.csv”

我想从 data.csv 上的 ma​​cro.xmls 文件运行宏 [Analyze] 以生成一些数据并保存结果

到目前为止我的代码是:

macroPath="Macro.xlsm"
filePath="Output.csv"

def performAnalysis():

    if os.path.exists(macroPath):    
        excel = win32com.client.Dispatch("Excel.Application")
        excel.Visible= True
        excel.Workbooks.Add(filePath)       
        excel.Application.Run(macroPath+"!Analyze")
        excel.Application.Quit()
        del excel
    else:
        print("Error")

def main():
    performAnalysis()

main()

当我运行上面的代码时,我收到以下错误消息:-

pywintypes.com_error: (-2147352567, 'Exception occurred.', (0, u'Microsoft Excel', u"Cannot run the macro 'C:\\Users\\Nabeel\\Desktop\\dense_breasts_experiments\\VolparaOutputExcelMacroOnly_Nov20thV1.xlsm!VolparaAnalyze'. The macro may not be available in this workbook or all macros may be disabled.", u'xlmain11.chm', 0, -2146827284), None)

任何人都可以指导我做错了什么吗?

代码编辑:

def performAnalysis():


    if os.path.exists(macroPath):
        excel = win32com.client.Dispatch("Excel.Application")
        excel.Visible= True
        excel.Workbooks.Open(filePath)  
        excel.Workbooks.Open(macroPath)    
        excel.Application.Run(macroPath+"!Analyze")         

def main():
    performAnalysis()

main()

仍然遇到同样的错误

最佳答案

不确定您使用的是哪个库,但 win32com 有一个保存更改的选项,您所要做的就是添加以下行:

excel.ActiveWorkbook.Saved = True

此外,excel 代表导入 win32com.client 后的 win32.DispatchEx('Excel.Application')

让我知道它是否有效!

关于python - 在python中运行excel宏并保存结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27892492/

相关文章:

python - BeautifulSoup 为 .find 和 .find_all 提供不同的结果

excel - 在 Excel 中复制值 N 次

java - 使用 Apache POI 将单元格内容的一部分设置为下划线?

python - Pandas :不能删除列:ValueError:标签 [<colName>] 不包含在轴中

python - 如何在 Python 中获取匹配正则表达式的组名?

python - 当您需要基于另一列更新列时,在 Pandas 中循环的替代方法

python - 语法错误: invalid syntax line 138 unexpected error

python - 用 sympy 反转排列

vba - 运行时错误 13 : Type mismatch

Python 创建的线程比预期多 2 倍