Excel精英培训网

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

[已解决]简化代码

[复制链接]
发表于 2013-12-1 18:02 | 显示全部楼层 |阅读模式
本帖最后由 fghji 于 2013-12-1 18:33 编辑

Sub 总数()
   Application.DisplayAlerts = False
   With Workbooks.Open(ThisWorkbook.Path & "\book1.xls")
   Workbooks("book1.xls").Sheets(6).Range("A3:A95").Copy Workbooks("book10.xls").Sheets(1).Range("I3")
   Workbooks("book1.xls").Sheets(6).Range("B3:B95").Copy Workbooks("book10.xls").Sheets(3).Range("I3")
    .Close True
    End With
   With Workbooks.Open(ThisWorkbook.Path & "\book2.xls")
   Workbooks("book2.xls").Sheets(6).Range("A3:A95").Copy Workbooks("book10.xls").Sheets(1).Range("J3")
   Workbooks("book2.xls").Sheets(6).Range("B3:B95").Copy Workbooks("book10.xls").Sheets(3).Range("J3")
    .Close True
    End With
   With Workbooks.Open(ThisWorkbook.Path & "\book3.xls")
   Workbooks("book3.xls").Sheets(6).Range("A3:A95").Copy Workbooks("book10.xls").Sheets(1).Range("K3")
   Workbooks("book3.xls").Sheets(6).Range("B3:B95").Copy Workbooks("book10.xls").Sheets(3).Range("K3")
    .Close True
    End With
   With Workbooks.Open(ThisWorkbook.Path & "\book4.xls")
   Workbooks("book4.xls").Sheets(6).Range("A3:A95").Copy Workbooks("book10.xls").Sheets(1).Range("L3")
   Workbooks("book4.xls").Sheets(6).Range("B3:B95").Copy Workbooks("book10.xls").Sheets(3).Range("L3")
    .Close True
    End With
   With Workbooks.Open(ThisWorkbook.Path & "\book5.xls")
   Workbooks("book5.xls").Sheets(6).Range("A3:A95").Copy Workbooks("book10.xls").Sheets(1).Range("M3")
   Workbooks("book5.xls").Sheets(6).Range("B3:B95").Copy Workbooks("book10.xls").Sheets(3).Range("M3")
    .Close True
    End With
    Application.DisplayAlerts = True
End Sub
最佳答案
2013-12-1 18:11
  1. Sub 总数()
  2.     Application.DisplayAlerts = False
  3.     Dim wb10 As Workbook
  4.     Set wb10 = Workbooks("book10.xls")
  5.     Dim i As Byte
  6.     Application.ScreenUpdating = False
  7.     For i = 1 To 5
  8.         With Workbooks.Open(ThisWorkbook.Path & "\book" & i & ".xls")
  9.             With .Sheets(6)
  10.                 .Range("A3:A95").Copy wb10.Sheets(1).Cells(3, 8 + i)
  11.                 .Range("B3:B95").Copy wb10.Sheets(3).cells(3, 8 + i)
  12.             End With
  13.             .Close True

  14.         End With
  15.     Next
  16.     Application.DisplayAlerts = True
  17. End Sub
复制代码
发表于 2013-12-1 18:05 | 显示全部楼层
回复

使用道具 举报

发表于 2013-12-1 18:11 | 显示全部楼层
没得好大优化空间,无非写成循环什么的
回复

使用道具 举报

发表于 2013-12-1 18:11 | 显示全部楼层    本楼为最佳答案   
  1. Sub 总数()
  2.     Application.DisplayAlerts = False
  3.     Dim wb10 As Workbook
  4.     Set wb10 = Workbooks("book10.xls")
  5.     Dim i As Byte
  6.     Application.ScreenUpdating = False
  7.     For i = 1 To 5
  8.         With Workbooks.Open(ThisWorkbook.Path & "\book" & i & ".xls")
  9.             With .Sheets(6)
  10.                 .Range("A3:A95").Copy wb10.Sheets(1).Cells(3, 8 + i)
  11.                 .Range("B3:B95").Copy wb10.Sheets(3).cells(3, 8 + i)
  12.             End With
  13.             .Close True

  14.         End With
  15.     Next
  16.     Application.DisplayAlerts = True
  17. End Sub
复制代码
回复

使用道具 举报

发表于 2013-12-1 18:14 | 显示全部楼层
.close true也可以改成.close false
毕竟文件不是写入到了book1-5.xls,不需要保存。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 12:39 , Processed in 0.292731 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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