| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1469 人关注过本帖
标题:VBS、VB和VBA的操作EXCEL,效率怎么差这么多
只看楼主 加入收藏
醉里流年
Rank: 2
等 级:论坛游民
帖 子:7
专家分:20
注 册:2021-9-13
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
VBS、VB和VBA的操作EXCEL,效率怎么差这么多
有个网友发来一份表,从系统导出的客户信息,手机号码里面随机加入了一些字符,颜色为白色字号为1,要把这些字符删除,然后我用VBS写了个代码如下:
程序代码:
Dim application,rng
Set application = GetObject(,"excel.application")
application.ScreenUpdating = false
set rng = application.selection
arr = rng.resize(rng.rows.count + 1,1).value
For i = 1 To UBound(arr) - 1    
        With rng(i,1)
            For k = 1 To Len(arr(i,1))
                If .characters(k,1).font.size > 3 Then
                    s = s & Mid(arr(i,1),k,1)
                End If
            Next        
        End With
        arr(i,1) = s
        s = ""
Next
    rng.value = arr
    rng.font.colorindex = 1
    rng.font.size = 9
    application.ScreenUpdating = True
Set application = Nothing
set rng = nothing

数据源3万条左右,代码保存为VBS,运行时间为700秒左右。移植到VB,运行时间500多秒,转用VBA运行,结果为5秒多。
之前也遇到过一次类似的情况,目标区域10万行,选择其中的偶数行,同样的代码用VBS运行10分钟,用VBA几秒钟
呃,怎么差距这么大的?
搜索更多相关主题的帖子: VBA application VBS Set 运行 
2021-11-29 16:56
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:20 
VB6\VBS 操作 EXCEL 都是外部调用,并且是跨进程调用。
而 VBA 操作 EXCEL 是内部调用,自然就是VBA的速度快。

有兴趣的话可以去看一下操作系统的起源和发展史,就可以知道 跨进程调用是特别慢的。

授人于鱼,不如授人于渔
早已停用QQ了
2021-11-29 17:38
醉里流年
Rank: 2
等 级:论坛游民
帖 子:7
专家分:20
注 册:2021-9-13
收藏
得分:0 
回复 2楼 风吹过b
大佬,我想问下,现在PYTHON办公不是很流行吗,如果用它来实现我帖子中的功能,效率会更高吗
2021-12-02 12:20
freeshierly
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2021-6-18
收藏
得分:0 
回复 楼主 醉里流年
vba是自带的。不需要activeX
2021-12-02 15:03
约定的童话
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:56
帖 子:246
专家分:1442
注 册:2021-8-1
收藏
得分:0 
回复 3楼 醉里流年
小数据体现不出来,大数据PY的多线程是他的优势
2021-12-03 07:26
快速回复:VBS、VB和VBA的操作EXCEL,效率怎么差这么多
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.141040 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved