Foxtable(狐表)用户栏目专家坐堂 → [讨论]ws.Copy(Before:=.Item(1))速度慢


  共有1213人关注过本帖树形打印复制链接

主题:[讨论]ws.Copy(Before:=.Item(1))速度慢

帅哥哟,离线,有人找我吗?
puma
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:343 积分:2880 威望:0 精华:0 注册:2023/6/7 16:07:00
[讨论]ws.Copy(Before:=.Item(1))速度慢  发帖心情 Post By:2023/9/20 15:39:00 [只看该作者]

需求:打开tb1 
         打开tb2 
         把tb1所有的sheet复制到tb2

问题: 速度有点慢,使用ws.Copy(Before:=.Item(1)) ,如果tb1里有30个sheet,需要等待一会儿,效率有点低,有其他方法吗?


源码:
Dim Wb As MSExcel.Workbook = App.WorkBooks.open(tb1)
Dim Ws As MSExcel.WorkSheet
Dim WbNew As MSExcel.Workbook = App.WorkBooks.open(tb2)
ShowAppWindow(tb3, 2) 
Dim wsNew As MSExcel.WorkSheet = Wb.WorkSheets(1) '指定要复制的工作表
'''获取sheet名称
For Each WsName As MSExcel.WorkSheet In Wb.WorkSheets
    '    Output.Show(WsName.Name)
    ws = Wb.WorkSheets(WsName.Name)
    With WbNew.WorkSheets
        ws.Copy(Before:=.Item(1))'复制到最前面
    End With
    
Next
WbNew.Save

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107479 积分:546674 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/9/20 15:57:00 [只看该作者]

这个是execl组件自己的功能,慢也没有办法。

没有其它办法

 回到顶部
帅哥哟,离线,有人找我吗?
puma
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:343 积分:2880 威望:0 精华:0 注册:2023/6/7 16:07:00
  发帖心情 Post By:2023/9/20 16:13:00 [只看该作者]

有一次性,把所有工作簿的sheet移动到另一个工作簿的sheet里吗?  不用for循环

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107479 积分:546674 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/9/20 16:24:00 [只看该作者]

没见过哦,都要循环的。

如果是移动,而不是复制,这个应该会快一点:http://www.foxtable.com/webhelp/topics/1465.htm
[此贴子已经被作者于2023/9/20 16:24:30编辑过]

 回到顶部