excel vba,读取指定路径上的excel 文件数据,后台读取,不要打开它
我已经做了一个excel表格,我现在用的是最笨的方法,就是用了辅助的表格,把路径上的数据表一个个打开,贴到辅助表中,再关闭。处理得很慢。我想能不能不用辅助数据表,直接后台...
我已经做了一个excel表格,我现在用的是最笨的方法,就是用了辅助的表格,把路径上的数据表一个个打开,贴到辅助表中,再关闭。处理得很慢。
我想能不能不用辅助数据表,直接后台对路径上的excel文件读取数据呢?各位大侠帮帮忙吧。
还有个小问题,下面的Observation1!,就是我建的辅助表,我现在要在指定单元格里面输出对辅助表中数据计算的值,如果没有辅助表,直接从路径上读取数据,这个countifs该怎么写呢。
=COUNTIFS(Observation1!B:B,"*s*",Observation1!AG:AG,start!B1)
说简单点,请看代码
Dim a As String
a = Application.WorksheetFunction.CountIfs(Worksheets("Observation1").Range("AG:AG"), Worksheets("start").Range("B1"))
Sheet4.Cells(2, 6).Value = a
现在这个observation1这个sheet是我建的辅助表,从D:\ 打开,然后粘贴过来的。现在我想不打开,直接引用数据的话,这段程序该怎么改呢。
不要打开引用数据的文件,不然速度实在太慢了。 展开
我想能不能不用辅助数据表,直接后台对路径上的excel文件读取数据呢?各位大侠帮帮忙吧。
还有个小问题,下面的Observation1!,就是我建的辅助表,我现在要在指定单元格里面输出对辅助表中数据计算的值,如果没有辅助表,直接从路径上读取数据,这个countifs该怎么写呢。
=COUNTIFS(Observation1!B:B,"*s*",Observation1!AG:AG,start!B1)
说简单点,请看代码
Dim a As String
a = Application.WorksheetFunction.CountIfs(Worksheets("Observation1").Range("AG:AG"), Worksheets("start").Range("B1"))
Sheet4.Cells(2, 6).Value = a
现在这个observation1这个sheet是我建的辅助表,从D:\ 打开,然后粘贴过来的。现在我想不打开,直接引用数据的话,这段程序该怎么改呢。
不要打开引用数据的文件,不然速度实在太慢了。 展开
5个回答
展开全部
只能给你个几个参考,当然还有其他方法,希望能够帮到你 望采纳
getobject函数 本质是打开的,只是看不到窗口
Dim wb as workbook
set wb = getobject(具体路径+文件)
with wb
.............(operation on wb)
end with
wb.close false
set wb=nothing
getobject函数 本质是打开的,只是看不到窗口
Dim wb as workbook
set wb = getobject(具体路径+文件)
with wb
.............(operation on wb)
end with
wb.close false
set wb=nothing
追问
有没有不打开的方法啊,由于数据表很大,打开的话运行速度太慢了,谢谢你了!补充问题,请看代码
Dim a As String
a = Application.WorksheetFunction.CountIfs(Worksheets("Observation1").Range("AG:AG"), Worksheets("start").Range("B1"))
Sheet4.Cells(2, 6).Value = a
现在这个observation1这个sheet是我建的辅助表,从D:\ 打开,然后粘贴过来的。现在我想不打开,直接引用数据的话,这段程序该怎么改呢
追答
不要纠结于打不打开表了,程序内部肯定是需要进行访问目标表的
理论上,程序还是需要载入目标表内容的,不然怎么进行处理呢
你不知道excel的源代码,是不可能做到直接去解析他的数据存储
更何况你是用excel的vba来处理excel自己的数据,他当然用他自己的方式访问目标表
在屏幕上显示或不显示打开的表只是一种形式过程
无论所谓的打开和不打开表,本质上计算机都要进行载入操作的文件。
可能你会觉得某些隐藏表,或者屏幕不显示表的方式会快一点,那是因为Screenupdate的速度肯定要比你机器内部处理速度要慢,隐藏或屏蔽了显示的处理过程,会是速度相对提高点
展开全部
楼上说的是对的,不可能不打开,要读取excel数据,必须要打开excel进程,并读入文件数据
只不过可以让进程在后台运行,看不到罢了
只不过可以让进程在后台运行,看不到罢了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把邮箱发来,具体答案我发给你
追问
1012513518@qq.com
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没看明白。在说详细点,
追问
说简单点,请看代码
Dim a As String
a = Application.WorksheetFunction.CountIfs(Worksheets("Observation1").Range("AG:AG"), Worksheets("start").Range("B1"))
Sheet4.Cells(2, 6).Value = a
现在这个observation1这个sheet是我建的辅助表,从D:\ 打开,然后粘贴过来的。现在我想不打开,直接引用数据的话,这段程序该怎么改呢
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以把辅助表,做成模板,然后在宏中加入到当前文件中,用后再删除,应该能快点
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询