在python中运行excel宏并保存结果
我有两个文件,即“macro.xlms”和“data.csv” 我想从data.csv上的macro.xmls文件运行宏[Analyze],以生成一些数据并保存结果 到目前为止,我的代码是:在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
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
我已经尝试过了,但仍然是相同的错误。请查看我在codeIsAnalyze
常规VBA代码模块中的公共方法中所做的编辑?