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

在python中运行excel宏并保存结果,python,excel,python-2.7,pywin32,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("Exce

我有两个文件,即“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()

仍然出现相同的错误

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

excel.ActiveWorkbook.Saved = True
另外,
excel
代表导入win32com.client后的
win32.DispatchEx('excel.Application')


让我知道它是否有效

通常,您会首先打开包含宏的工作簿,然后调用
应用程序。在打开的工作簿上运行
。使用上述代码,我可以打开两个工作簿。。你的意思是在添加后打开它吗?我的意思是首先使用
open(macroPath)
,然后调用
Run
我已经尝试过了,但仍然是相同的错误。请查看我在codeIs
Analyze
常规VBA代码模块中的公共方法中所做的编辑?