我最近开始使用python 3.6(通过Anaconda),所以如果下面的结果不清楚,我很抱歉。情况如下:
我有一个excel文件,我用它来运行宏来获取Prophet的结果。我的宏工作得很好但不幸的是,经过几次使用后,excel达到了内存的极限,我无法再提取结果了。解决问题的方法是关闭excel然后再打开它。
为此,在同一个vba宏中,我打开一个python脚本,允许我运行宏,保存excel文件,关闭它并再次打开它。宏如下:
import win32com.client
object = win32com.client.Dispatch('Excel.Application')
object.visible=1
object.Run("Central_Run")
print("Macro ran successfully!")
print("Active WB:", object.ActiveWorkbook.Name)
for wb in object.Workbooks:
print("WB:",wb.Name)
wb.Save()
#The loop above saves all the workbooks that are open
object.quit()
#Open the Excel file again
object=win32com.client.Dispatch('Excel.Application')
wb=object.Workbooks.open(‘myfile.xlsm')
该脚本有效,但是,我想在脚本的第二部分打开excel文件,而不指定其名称(wb = object.Workbooks.open('myfile.xlsm')),以便我可以将代码用于具有不同名称的其他类似excel文件。我有的想法是打开最新使用的excel文件或将脚本链接到我的excel文件中的特定单元格,这样我只需修改该单元格而不是脚本,但不幸的是,我无法做到它。 在此先感谢您的帮助! :)
答案 0 :(得分:0)
您可以使用以下内容替换第二个打印语句:
wbName=object.ActiveWorkbook.Name
print("Active WB:", wbName)
然后将最后一行替换为:
wb=object.Workbooks.open(wbName)