以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]遍历sheet表名时特别慢  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=189355)

--  作者:moseser
--  发布时间:2023/11/27 14:43:00
--  [求助]遍历sheet表名时特别慢
Dim dlg As New OpenFileDialog \'定义一个新的OpenFileDialog 
dlg.Filter = "Excel文件|*.xls|Word文件|*.doc|Access文件|*.mdb" \'设置筛选器
If dlg.ShowDialog = DialogResult.Ok Then \'如果用户单击了确定按钮
    Vars("Path_in") = dlg.FileName
    
    Dim App As New MSExcel.Application
    Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open(dlg.FileName)
    Dim filter As String
    For Each ws As MSExcel.WorkSheet In Wb.WorkSheets
        filter = filter & "|" & ws.Name
    Next 
    filter = filter.TrimStart("|")
    e.Form.Controls("ComboBox1").ComboList = filter
End If

我做了一个按钮,按钮的命令如上,当选择表是,下拉框的列表就显示表名,可是非常慢,不如咱们软件的高速合并快,请问什么原因?

--  作者:有点蓝
--  发布时间:2023/11/27 14:56:00
--  
vba一向就慢,处理后一定要关闭文档:
……
    e.Form.Controls("ComboBox1").ComboList = filter
App.quit
End If

如果只是获取sheet名称,不涉及复杂的内容控制,建议使用XLS.Book:http://www.foxtable.com/webhelp/topics/1152.htm

--  作者:moseser
--  发布时间:2023/11/27 17:33:00
--  回复:(有点蓝)vba一向就慢,处理后一定要关闭文档:...
为啥咱们软件自带的很快
--  作者:有点蓝
--  发布时间:2023/11/27 17:42:00
--  
那个不需要调用office的组件,没用到vba
--  作者:puma
--  发布时间:2023/11/27 18:19:00
--  
如果需要:我可以向你提供获取excel表名的函数,需要引入NPOI
--  作者:y2287958
--  发布时间:2023/11/28 7:55:00
--  
建议数据源会快很多
--  作者:moseser
--  发布时间:2023/11/28 8:21:00
--  回复:(有点蓝)那个不需要调用office的组件,没用到...
咱们软件是如何做到的呢?
--  作者:有点蓝
--  发布时间:2023/11/28 8:42:00
--  
那是C1自带的功能,底层怎么处理的我们也不清楚
--  作者:chen37280600
--  发布时间:2023/11/28 9:43:00
--  
想问下,C1有没官方手册链接?可以看看C1里Excel处理共有哪些方法属性
--  作者:有点蓝
--  发布时间:2023/11/28 9:47:00
--  
https://www.grapecity.com/componentone/docs