| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1811 人关注过本帖
标题:把VBA代码移植到VB6.0中,运行很慢是什么原因?有没有什么好的解决方案?
只看楼主 加入收藏
duzihanghai
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2021-9-16
结帖率:50%
收藏
 问题点数:0 回复次数:6 
把VBA代码移植到VB6.0中,运行很慢是什么原因?有没有什么好的解决方案?
自己用VBA做了一个产品选型程序,在VBA中运行很快,但数据保存在十几张工作表中,数据安全不好保证。现在想移植到VB中去,需要用VB调用excel查询数据,但刚刚做了一个简单测试,运行速度特别慢,请问哪位老师知道这个是什么原因?有没有什么更好的解决方案?
[code]Private Sub Command1_Click()
Application.ScreenUpdating = False '关闭屏幕刷新
Dim rng As Range
Dim xlApp As Excel.Application '声明对象变量
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Dim i
Dim Temp() As Byte

Temp = LoadResData(101, "CUSTOM")
Open "C:\Program Files (x86)\sldata.xlsx" For Binary Access Write As #1
Put #1, , Temp()
Close #1
Set xlApp = Excel.Application '实例化对象
Set xlBook = xlApp.Workbooks.Open("C:\Program Files (x86)\sldata.xlsx")
Set xlSheet = xlBook.Worksheets("WO")
xlApp.Visible = False '使Excel隐藏不可见
i = xlSheet.Range("A2:A1236").Find(Text1.Text).Row
Label1.Caption = xlSheet.Cells(i, 2)


xlApp.DisplayAlerts = False '不提示是否覆盖
xlBook.Close (False) '关闭工作簿
xlApp.Visible = False
xlApp.Quit '结束EXCEL对象

Set xlSheet = Nothing
Set xlBook = Nothing
Set xlApp = Nothing '释放xlApp对象
End Sub
简单测试.rar (504.24 KB)
搜索更多相关主题的帖子: Dim Set Excel 运行 False 
2021-09-29 17:19
约定的童话
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:56
帖 子:246
专家分:1442
注 册:2021-8-1
收藏
得分:0 
Temp = LoadResData(101, "CUSTOM")
Open "C:\Program Files (x86)\sldata.xlsx" For Binary Access Write As #1
Put #1, , Temp()
Close #1
这几步耗费时间
收到的鲜花
  • duzihanghai2021-09-29 22:14 送鲜花  2朵  
2021-09-29 19:26
duzihanghai
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2021-9-16
收藏
得分:0 
回复 2楼 约定的童话
刚才试了一下,注释掉释放文件的这部分语句,直接查找的话初次运行依然很慢,我自己推断是打开excel进程时耗费比较多的时间,因为一旦程序启动运行完第一次后,后续再进行筛选速度明显加快。感谢您的帮助!
2021-09-29 22:13
约定的童话
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:56
帖 子:246
专家分:1442
注 册:2021-8-1
收藏
得分:0 
回复 3楼 duzihanghai
你可以加一个分段计时比较下,打开要多久,读取要多久,就一目了然了
2021-09-30 07:03
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
VB6 操作 Excel 是跨进程操作,自然慢。
而vba 是内置到 excel中执行,在本进程中操作,这种情况下自然比VB6的跨进程操作要快。

操作 excel要快的话,只有把 excel 当作数据库,使用 odbc 等方式进行查询 才会快。

授人于鱼,不如授人于渔
早已停用QQ了
2021-09-30 18:58
asad
Rank: 1
等 级:新手上路
威 望:1
帖 子:68
专家分:0
注 册:2019-12-6
收藏
得分:0 
学习了,谢谢
2022-01-09 17:47
yuma
Rank: 12Rank: 12Rank: 12
来 自:银河系
等 级:贵宾
威 望:37
帖 子:1934
专家分:3012
注 册:2009-12-22
收藏
得分:0 
二进制读写本身就慢。

心生万象,万象皆程序!
本人计算机知识网:http://bbs.为防伸手党,本站已停止会员注册。
2022-01-10 17:43
快速回复:把VBA代码移植到VB6.0中,运行很慢是什么原因?有没有什么好的解决方案 ...
数据加载中...
 
   



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

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