excel相关问题:VBA编写拆分工作簿程序时出现的下标越界错误。

代码如图,每次运行到标记处都弹出下标越界错误,请高手指教。... 代码如图,每次运行到标记处都弹出下标越界错误,请高手指教。 展开
 我来答
ExcelPower
推荐于2016-01-06 · 专业Excel公式图表数据分析VBA
ExcelPower
采纳数:4495 获赞数:11863

向TA提问 私信TA
展开全部

代码会认为  新建的 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
gvntw
2015-08-03 · 知道合伙人软件行家
gvntw
知道合伙人软件行家
采纳数:709 获赞数:4879
微软最有价值专家(Most Valuable Professionals) 合著书籍7部:《Excel应用大全》等。

向TA提问 私信TA
展开全部
你的写法是错误的,Sheets.copy相当于右键在工作表标签处点击“移动或复制工作表”并选择复制的功能。
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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式