展开全部
代码会认为 新建的 Workbook是 Thisworkbook
拆分工作薄 不用这么写
Sub 拆分()
Application.ScreenUpdating = False
b = Sheets.Count
For i = 1 To b
Sheets(i).Copy
a = ThisWorkbook.Worksheets(i).Name
With ActiveWorkbook
.SaveAs Filename:=ThisWorkbook.Path & "\" & a & ".xls"
.Close True
End With
Next i
Application.ScreenUpdating = true
End Sub
更多追问追答
追问
请问为啥会认为新建的 Workbook是 Thisworkbook?
追答
因为你保存了, 正在使用的 就是 新建的 个 Workbook
2015-08-03 · 知道合伙人软件行家
gvntw
知道合伙人软件行家
向TA提问 私信TA
知道合伙人软件行家
采纳数:709
获赞数:4879
微软最有价值专家(Most Valuable Professionals) 合著书籍7部:《Excel应用大全》等。
向TA提问 私信TA
关注
展开全部
你的写法是错误的,Sheets.copy相当于右键在工作表标签处点击“移动或复制工作表”并选择复制的功能。
Thisworkbook.sheets("Sheet"&i).copy '把工作表复制到新工作簿
ActiveWorkbook.SaveAs 路径及文件名(包含扩展名) '保存工作簿
ActiveWorkbook.close '关闭工作簿
你可以录制一段宏(移动或复制工作表,并保存工作簿到指定位置,再关闭文件),看一下就明白了。
Thisworkbook.sheets("Sheet"&i).copy '把工作表复制到新工作簿
ActiveWorkbook.SaveAs 路径及文件名(包含扩展名) '保存工作簿
ActiveWorkbook.close '关闭工作簿
你可以录制一段宏(移动或复制工作表,并保存工作簿到指定位置,再关闭文件),看一下就明白了。
更多追问追答
追问
我把我错误的那句换成了您给我的这3句,但是运行到您给的第二句时还是出现了错误提示:应用程序定义或对象定义错误。
追答
set wkb=workbooks.add这句不需要。
for i =1 to 8
Thisworkbook.sheets("Sheet"&i).copy '把工作表复制到新工作簿
ActiveWorkbook.SaveAs thisworkbook.path & "\" & i & ".xls" '保存工作簿,这里的扩展名要根据你默认保存什么类型修改
ActiveWorkbook.close '关闭工作簿
next
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询