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

时间:2015-01-11 21:48:59

标签: python excel python-2.7 pywin32

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

我想在 data.csv 上的 macro.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()

仍然得到相同的错误

1 个答案:

答案 0 :(得分:1)

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

excel.ActiveWorkbook.Saved = True

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

让我知道它是否有效!