Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 3186|回复: 5

[已解决]移动工作表新建一个工作簿

[复制链接]
发表于 2013-7-13 13:23 | 显示全部楼层 |阅读模式
现在把“样表”工作簿所要的事,在您指导下已基本完成,最后是我想把“样表”这个工作簿里面除sheet1至sheet10以外的工作表全部移动到新建的工作簿。以写代码的工作表(也就是“样表”工作簿sheet10)b6-b10单元格的值为新建的工作表名字,b6,b7,b8,b9,b10,的值是连续的数字,“样表”shee10.[b6]有值时,新建的工作簿名字=[b6] ,如果“样表”sheet10.[b6:b9]值分别为102,103,104,105.那么新建的工作簿名字就是“102-105”,请问代码怎么写谢谢
最佳答案
2013-7-13 20:29
要用就学 发表于 2013-7-13 18:49
谢谢指导( :)号我加上了但是无法运行,运行Set sht10 = Workbooks("Sheet10")
“9  下标越界”,我 ...

这里写错了,犯低级错误了。应该是WORKSHEETS("Sheet10")

发表于 2013-7-13 13:56 | 显示全部楼层
测试你来。
  1. Sub test()

  2.     On Error GoTo ErrorHandler
  3.     Dim sht10 As Worksheet
  4.     Dim sht As Worksheet
  5.     Dim strPath As String
  6.     Dim i As Long

  7.     With Application
  8.         .ScreenUpdating = False
  9.         .DisplayAlerts = False
  10.         .EnableEvents = False
  11.         .Calculation = xlCalculationManual
  12.     End With

  13.     strPath = ThisWorkbook.Path & Application.PathSeparator
  14.     Set sht10 = Workbooks("Sheet10")

  15.     i = 6
  16.     For Each sht In Worksheets
  17.         If Len(sht10.Range("b" & i).Value) Then
  18.             If Not (sht.Name Like "Sheet[1-9]" Or sht.Name Like "Sheet10") Then
  19.                 sht.Move
  20.                 ActiveWorkbook.SaveAs Filename = strPath & sht10.Range("b" & i).Value & ".xls", FileFormat:=xlExcel8
  21.                 ActiveWorkbook.Close False
  22.                 i = i + 1
  23.             End If
  24.         End If
  25.     Next

  26.     With Application
  27.         .ScreenUpdating = True
  28.         .DisplayAlerts = True
  29.         .EnableEvents = True
  30.         .Calculation = xlCalculationAutomatic
  31.     End With

  32. ErrorHandler:
  33.     MsgBox Err.Number & vbCrLf & Err.Description
  34.     With Application
  35.         .ScreenUpdating = True
  36.         .DisplayAlerts = True
  37.         .EnableEvents = True
  38.         .Calculation = xlCalculationAutomatic
  39.     End With
  40. End Sub
复制代码
回复

使用道具 举报

发表于 2013-7-13 13:59 | 显示全部楼层
ActiveWorkbook.SaveAs Filename = strPath & sht10.Range("b" & i).Value & ".xls", FileFormat:=xlExcel8
要改为
ActiveWorkbook.SaveAs Filename:= strPath & sht10.Range("b" & i).Value & ".xls", FileFormat:=xlExcel8

漏了个冒号。
回复

使用道具 举报

发表于 2013-7-13 14:00 | 显示全部楼层
现在把“样表”工作簿所要的事,在您指导下已基本完成,?/ 原贴在哪里?
回复

使用道具 举报

 楼主| 发表于 2013-7-13 18:49 | 显示全部楼层
本帖最后由 要用就学 于 2013-7-13 19:07 编辑
hwc2ycy 发表于 2013-7-13 13:56
测试你来。


谢谢指导( :)号我加上了但是无法运行,运行Set sht10 = Workbooks("Sheet10")
“9  下标越界”,我不知道是什么意思,请指教。
回复

使用道具 举报

发表于 2013-7-13 20:29 | 显示全部楼层    本楼为最佳答案   
要用就学 发表于 2013-7-13 18:49
谢谢指导( :)号我加上了但是无法运行,运行Set sht10 = Workbooks("Sheet10")
“9  下标越界”,我 ...

这里写错了,犯低级错误了。应该是WORKSHEETS("Sheet10")

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-19 12:49 , Processed in 0.278688 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表