Python-Win32com-打开工作簿& amp;为每个选项卡创建一个新的Excel文件 [英] Python - Win32com - Open Workbook & Create a New Excel File for Each Tab

查看:57
本文介绍了Python-Win32com-打开工作簿& amp;为每个选项卡创建一个新的Excel文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个MS Excel工作簿,我想打开它,然后循环浏览这些选项卡,并为原始工作簿中的每个选项卡创建并保存一个工作簿.因此,我打开文件A,其中有选项卡1、2、3,并创建并保存文件B,C,D,每个文件中都带有一个唯一的选项卡.我有用于创建工作表的单个副本的VBA的代码,但是当我尝试在Python中执行此操作时,我最终得到了每个工作簿中的所有选项卡.以下是有效的VBA:

I have an MS Excel Workbook that I would like to open and then loop through the tabs and create and save a workbook for each tab in the original workbook. So I open file A and there are tabs 1, 2, 3 and create and save a file B, C, D each with one a unique tab in it. I have the code for the VBA which creates a single copy of a worksheet but when I attempt to do this in Python I end up with all the tabs in each workbook. The following is the VBA that works:

 Sub ConvertTabsToFiles()
    Dim currPath As String
    currPath = Application.ActiveWorkbook.Path
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
 For Each xWs In ThisWorkbook.Sheets
    xWs.Copy
    Application.ActiveWorkbook.SaveAs Filename:=currPath & "\" & xWs.Name & ".xlsx"
    Application.ActiveWorkbook.Close False
 Next
   Application.DisplayAlerts = True
   Application.ScreenUpdating = True
 End Sub


以下是无效的Python代码:


The following is the Python Code that does not work:

 xlApp = win32.com.client.Dispatch("Excel.Application")
 xlwb = xlApp.Workbooks.Open("C:\Inputfile.xlsx")

 for sheet in xlwb.Worksheets:
     sheet.Copy
     xlApp.ActiveWorkbook.SaveAs("C:\Users\user\AppData\Local\Temp\\"+ sheet.Name+".xlsx")


非常感谢您的帮助,我很沮丧.提前谢谢.


Your help is really appreciated, I am stumped. Thanks ahead of time.

推荐答案

感谢Schollii,我能够走上正确的道路.以下是对我有用的,希望对您有帮助:

Thanks for Schollii, I was able to get on the right track. The following is what worked for me, I hope it helps you:

for sheet in xlwb.Worksheets:
     xlApp = win32com.client.Dispatch("Excel.Application")
     nwb = xlApp.WorkbookAdd()
     sheet.Copy(Before=nwb.Sheet(1))
     nwb.SaveAs("C:\Users\user\AppData\Local\Temp\\" +sheet.Name+ ".xlsx")
     nwb.Close(True)

谢谢大家.尤其是Schollii,让我步入正轨.也要感谢TankorSmash的答案.

Thank you everyone. Especially Schollii for getting me on the right track. Also Thanks TankorSmash for the answer, too.

这篇关于Python-Win32com-打开工作簿& amp;为每个选项卡创建一个新的Excel文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆