excel vba,读取指定路径上的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:\ 打开,然后粘贴过来的。现在我想不打开,直接引用数据的话,这段程序该怎么改呢。
不要打开引用数据的文件,不然速度实在太慢了。

只能给你个几个参考,当然还有其他方法,希望能够帮到你 望采纳
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的速度肯定要比你机器内部处理速度要慢,隐藏或屏蔽了显示的处理过程,会是速度相对提高点

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-04-24
楼上说的是对的,不可能不打开,要读取excel数据,必须要打开excel进程,并读入文件数据
只不过可以让进程在后台运行,看不到罢了
第2个回答  2012-04-26
把邮箱发来,具体答案我发给你追问

1012513518@qq.com

第3个回答  2012-04-20
没看明白。在说详细点,追问

说简单点,请看代码
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:\ 打开,然后粘贴过来的。现在我想不打开,直接引用数据的话,这段程序该怎么改呢

第4个回答  2012-04-25
可以把辅助表,做成模板,然后在宏中加入到当前文件中,用后再删除,应该能快点

excel vba,读取指定路径上的excel 文件数据,后台读取,不要打开它
getobject函数 本质是打开的,只是看不到窗口 Dim wb as workbook set wb = getobject(具体路径+文件)with wb ...(operation on wb)end with wb.close false set wb=nothing

vba读取同目录下excel指定列(后台打开,隐藏窗口)
打开一个Excel文件,鼠标右击下面的工作表(如sheet1)。选择“查看代码”,就可以打开VBA编辑界面。选择如下图所示的下拉菜单,选择“worksheet”。选择如下图所示的下拉菜单,选择对应的触发模式。这里我们选择BeforeDoubleClick,意思就是说:在本工作表鼠标双击(之前),将触发下面的代码程序。(activate意...

excelvba如何不打开工作表读取数据
首先,你需要在VBA编辑器中引用Microsoft ActiveX Data Objects库(通常版本为2.x或6.1),这可以通过VBA编辑器的“工具”->“引用”菜单完成。接着,你可以编写代码来创建一个ADODB.Connection对象,并设置其连接字符串以指向你的Excel文件(通常使用Provider=Microsoft.ACE.OLEDB.12.0或Provider=Microsoft...

excel的VBA关于如何后台打开工作簿并读取里面的数据问题(高手进)_百度...
Set excel_App = CreateObject("Excel.Application") '引用程序对象实例 excel_App.Visible = False '设置Excel为不可见 '打开文件 Set excel_Book = excel_App.Workbooks.Open("G:\\1.XLS") '工作簿实例 Set excel_sheet = excel_Book.Worksheets("Sheet2") '数据表实例 excel_sheet...

如何用vba不打开excel文件读写数据
代码及注释如下:在VBE界面左上角sheet3下面的ThisWorkbook中加入如下代码——Private Sub Workbook_Open()'选择事件为工作表打开时触发 Application.Visible = False'将Excel文件隐藏 UserForm1.Show'像是窗体 End Sub

VBA如何在不打开工作簿的情况下引用工作簿中的单元格(关键在于不打开...
As New Excel.ApplicationDim fd As FileDialogDim Filepath As Stringdim arr(1 to 100) as integerfilepath=你引用的那个文件的全部路径名称+文件名称Set Workbook = excelapp.Workbooks.Open(Filename:=filepath)With excelapp.Application'---你要引用什么就写下面,比如 我把目标文件中sheet1的A1...

VBA读取指定工作簿里的一个sheet到我的excel file
用getobject方法可以隐藏打开的工作簿对象,实现看上去没有打开的过程 sub test()dim wb as workbook dim sht as worksheet set wb=getobject("C:\\A.xls")set sht=wb.worksheets(1)sht.Cells.Copy ThisWorkbook.Worksheets(1).[A1]wb.close set wb=getobject("C:\\B.xls")set sht=wb.worksheets...

请教VBA不打开excel文件取得指定单元格数据
application.Workbooks.Open 文件路径 application.Workbooks(文件名).Close true或false表示是否保存 复制就是application.Workbooks("文件名").sheets("表名").range(源单元格地址).copy ActiveSheet.range(目标单元格地址)你可以用Set xlApp = CreateObject("Excel.Application")来建立一个看不到的Excel...

如何利用vba依次打开指定文件夹里的所有excel表,进行某种
为了打开文件夹中的所有Excel文件并执行操作,首先需要使用FSO对象或通过DIR循环目录下所有文件。一旦文件被选中,使用VBA的Open方法可以打开Excel工作簿。具体操作步骤如下:Sub 保存你的工作簿()ThisWorkbook.Save 'Save相当于你手工单击保存按钮;这个函数无参数 ThisWorkbook.SaveAs ' 另存为工作簿,把当前...

Excel VBA如何不打开其他文件读取最后一行数据
不打开文件是不可能获取内容的,这个要求相当于有人说麻烦你不进入我家、把我客厅的手机给我拿来。另外,读一个不断增加的巨大文件的末尾部分,这个想法不太科学,效率很差,会给你的系统带来巨大的压力。建议稍微改进一下,修改写文件的程序,生成的结果数据除了不断添加到一个长文件末尾,同时把最新...

相似回答