我在网上找到了这段代码。它用于从目录中的每个excel wb中提取一张表。我还在学习Python,所以我不知道我到底应该问什么。
错误显示";片材";未定义。很公平,但这是我找到的代码,它说它有效。我真的不知道该在这里定义什么。
import os
import win32com.client
path = "C:/Folder" #This folder contains the spreadsheets
pathmaster = "C:/Desktop/MyFile.xlsx"
xl = win32com.client.DispatchEx('Excel.Application')
xl.Visible = False
wbmaster = xl.Workbooks.Open(Filename=pathmaster)
os.listdir(path)
for sheet in sheets:
print(sheet)
wb1 = xl.Workbooks.Open(Filename=os.path.join(path, sheet))
ws1 = wb1.Worksheets(4)
ws1.Name = sheet[:4]
ws1.Copy(Before=wbmaster.Worksheets(1))
wb1.Close(True)
wbmaster.Close(SaveChanges=True)
正如您所说,"sheets"是未定义的。要解决这个问题,你需要在你对它的调用for sheet in sheets:
上面声明它
将您的代码更改为…
wbmaster = xl.Workbooks.Open(Filename=pathmaster)
for sheet in wbmaster.Sheets:
# Do code here
查看这些其他过去的答案
- 如何在win32com中迭代工作表
- Python:使用Win32 COM Api打开Excel工作簿
在for循环中使用之前,必须定义什么是工作表也许您必须使用:用于wbmaster中的纸张