Excel精英培训网

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

[已解决]希望通过VBA(或者宏)复制工作表N张,并且在.............

[复制链接]
发表于 2017-6-9 14:25 | 显示全部楼层 |阅读模式
希望通过VBA(或者宏)复制工作表N张,并且在J3单元格中的数字与复制后的工作表(如报表(5)对应  J3单元格中数字也是5)。         很多时候要复制几百几千张,工作量略大

最佳答案
2017-6-11 13:43
chart888 发表于 2017-6-11 09:36
仅仅是建立一个副本  然后命名G3单元格数值?不需要对表格修改?
  1. Private Sub CommandButton1_Click()
  2. Dim sInt, n, x As Integer
  3. Application.ScreenUpdating = False
  4. sInt = Application.InputBox(Prompt:="输入需要复制个数")
  5.     If Len(Trim(sInt)) > 0 Then
  6.         n = sInt
  7.     Else
  8.         MsgBox Prompt:="没有输入有效的数字"
  9.         Exit Sub
  10.     End If
  11. Do While x < n
  12. x = x + 1
  13. Worksheets("报告").Copy After:=Worksheets(Sheets.Count)
  14. ActiveSheet.Range("J3") = x + 1
  15. Application.ScreenUpdating = True
  16. Loop
  17. End Sub
复制代码


通过VBA(或者宏)达到效果.rar

118.85 KB, 下载次数: 23

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2017-6-9 15:24 | 显示全部楼层
看看这个效果怎么样?

通过VBA(或者宏)达到效果(效果图).rar

409.04 KB, 下载次数: 6

回复

使用道具 举报

发表于 2017-6-9 15:29 | 显示全部楼层
本帖最后由 chart888 于 2017-6-9 15:37 编辑
  1. Private Sub CommandButton1_Click()
  2. Application.ScreenUpdating = False
  3. Application.DisplayAlerts = False

  4. Dim f As String, i As Integer
  5. Dim wb As Excel.Workbook
  6. Dim sh As Excel.Worksheet
  7. Dim n
  8. f = Dir(ThisWorkbook.Path & "\*xls*")
  9. Do While f <> ""
  10.     If f <> ThisWorkbook.Name Then
  11.         Set wb = Workbooks.Open(ThisWorkbook.Path & "" & f)
  12.         For Each sh In Worksheets
  13.             If sh.Name = "报告" Then
  14.                 n = n + 1
  15.                 ThisWorkbook.Activate
  16.                 ThisWorkbook.Worksheets.Add after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
  17.                 ThisWorkbook.Sheets(Sheets.Count).Name = "报告(" & n & ")"
  18.                 sh.Cells.Copy ThisWorkbook.Worksheets(Sheets.Count).Cells
  19.                 ThisWorkbook.Worksheets(Sheets.Count).Range("j3") = n
  20.                 wb.Close True
  21.             End If
  22. Next
  23.     End If
  24.     f = Dir
  25. Loop
  26. Application.ScreenUpdating = True
  27. Application.DisplayAlerts = True
  28. MsgBox "已为您成功导入" & n & "张工作表"
  29. End Sub
复制代码

通过VBA(或者宏)达到效果.zip

107.53 KB, 下载次数: 7

回复

使用道具 举报

 楼主| 发表于 2017-6-9 19:34 | 显示全部楼层
lxlyhu 发表于 2017-6-9 15:24
看看这个效果怎么样?

每个工作表的J3单元格数字要改变的{如报表(2)中的J3单元格为2,报表(3)中的J3单元格为3,报表(4)中的J3单元格为4}。这是重点。谢谢
回复

使用道具 举报

 楼主| 发表于 2017-6-9 19:38 | 显示全部楼层

不是每个要汇总表格。

是在报表(1),复制建立副本报表(2),改报表(2)中J3单元格为2。

复制建立报表(3),改在报表(3)的J3单元格为3


回复

使用道具 举报

发表于 2017-6-9 20:11 | 显示全部楼层
没有看懂你啥意思
回复

使用道具 举报

 楼主| 发表于 2017-6-10 22:52 | 显示全部楼层
chart888 发表于 2017-6-9 20:11
没有看懂你啥意思

已经做好GIF了, 就是想通过宏(或者VBA)重复的操作建立副本并改J3单元格的数字

就是想减少这种工程量

就是想减少这种工程量
回复

使用道具 举报

发表于 2017-6-11 09:36 | 显示全部楼层
仅仅是建立一个副本  然后命名G3单元格数值?不需要对表格修改?
回复

使用道具 举报

发表于 2017-6-11 13:43 | 显示全部楼层    本楼为最佳答案   
chart888 发表于 2017-6-11 09:36
仅仅是建立一个副本  然后命名G3单元格数值?不需要对表格修改?
  1. Private Sub CommandButton1_Click()
  2. Dim sInt, n, x As Integer
  3. Application.ScreenUpdating = False
  4. sInt = Application.InputBox(Prompt:="输入需要复制个数")
  5.     If Len(Trim(sInt)) > 0 Then
  6.         n = sInt
  7.     Else
  8.         MsgBox Prompt:="没有输入有效的数字"
  9.         Exit Sub
  10.     End If
  11. Do While x < n
  12. x = x + 1
  13. Worksheets("报告").Copy After:=Worksheets(Sheets.Count)
  14. ActiveSheet.Range("J3") = x + 1
  15. Application.ScreenUpdating = True
  16. Loop
  17. End Sub
复制代码


表格1.rar

33.41 KB, 下载次数: 10

回复

使用道具 举报

 楼主| 发表于 2018-9-11 14:24 | 显示全部楼层

麻烦大神在这段代码中    X的原始取值取J3单元格的数字,来依次递增


回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-24 02:33 , Processed in 0.416471 second(s), 12 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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