Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共4 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

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

1楼
puma 发表于: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楼
有点蓝 发表于:2023/9/20 15:57:00
这个是execl组件自己的功能,慢也没有办法。

没有其它办法
3楼
puma 发表于:2023/9/20 16:13:00
有一次性,把所有工作簿的sheet移动到另一个工作簿的sheet里吗?  不用for循环
4楼
有点蓝 发表于:2023/9/20 16:24:00
没见过哦,都要循环的。

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

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .02344 s, 2 queries.