一个excel里有sheet1到sheet10,如何用宏来实现:点击按钮将sheet2到sheet
一个excel里有sheet1到sheet10,如何用宏来实现:点击按钮将sheet2到sheet5分别另存为单独的excel工作簿,且将其中公式转化成文本或数值,新ex...
一个excel里有sheet1到sheet10,如何用宏来实现:点击按钮将sheet2到sheet5分别另存为单独的excel工作簿,且将其中公式转化成文本或数值,新excel以各自的工作表名命名,如sheet2另存的excel命名为“sheet2”。保存路径为原excel所在路径。
展开
3个回答
展开全部
方法太笨
等巧方法
Sub 复制工作表()
For i = 2 To 5
ThisWorkbook.Sheets("Sheet" & i).Copy
Set bok = ActiveWorkbook
bok.Sheets(1).Cells.Copy
bok.Sheets(1).Cells.PasteSpecial Paste:=xlPasteValues
bok.SaveAs ThisWorkbook.Path & "\" & "Sheet" & i & ".xlsx"
bok.Close
Next i
End Sub
等巧方法
Sub 复制工作表()
For i = 2 To 5
ThisWorkbook.Sheets("Sheet" & i).Copy
Set bok = ActiveWorkbook
bok.Sheets(1).Cells.Copy
bok.Sheets(1).Cells.PasteSpecial Paste:=xlPasteValues
bok.SaveAs ThisWorkbook.Path & "\" & "Sheet" & i & ".xlsx"
bok.Close
Next i
End Sub
追问
你写的也很好,好想也给你分。
只能再次谢谢你了
展开全部
Sub 工作表拆分()
Dim sht As Worksheet
Application.ScreenUpdating = False
Application.DisplayAlerts = False
'以下是拆分工作表
For Each sht In Sheets
sht.Copy
ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & sht.Name & ".xls"
'以下是转为数值
ActiveWorkbook.ActiveSheet.Cells.Copy
ActiveWorkbook.ActiveSheet.Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'完成
ActiveWorkbook.Close
Next
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Dim sht As Worksheet
Application.ScreenUpdating = False
Application.DisplayAlerts = False
'以下是拆分工作表
For Each sht In Sheets
sht.Copy
ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & sht.Name & ".xls"
'以下是转为数值
ActiveWorkbook.ActiveSheet.Cells.Copy
ActiveWorkbook.ActiveSheet.Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'完成
ActiveWorkbook.Close
Next
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个问题不是太复杂,先Mark一下,稍后上代码和附件.
更多追问追答
追问
哎,真羡慕你们这些会vba编程的高手
追答
Alt+F11打开VBE编辑窗口,插入--模块,复制粘贴代码,F5运行.
Sub Sheets2Workbooks()
Dim i As Integer, iPath As String
Const iStart = 2 '开始工作表
Const iEnd = 5 '结束工作表
iPath = ThisWorkbook.Path & "\" '保存路径
Application.ScreenUpdating = False '关闭屏幕更新
If Sheets.Count < iStart Or Sheets.Count < iEnd Then MsgBox "error": Exit Sub '如果工作表总数小于开始工作表或结束工作表,报错后退出
For i = iStart To iEnd '开始工作表到结束工作表之间循环
Sheets(i).Copy '复制工作表
ActiveSheet.Cells.Copy '复制全部单元格
With Range("A1")
.PasteSpecial Paste:=xlPasteValues '值粘贴
.Select '选中A1单元格
End With
Application.CutCopyMode = False '取消复制模式
With ActiveWorkbook
.SaveAs Filename:=iPath & ActiveSheet.Name & ".xlsx", FileFormat:=xlOpenXMLWorkbook '保存工作簿
.Close '关闭工作簿
End With
Next
Application.ScreenUpdating = True '恢复屏幕更新
MsgBox "Done!" '提示完成
End Sub
示例文件如下,单击按钮后运行.
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询