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...

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

excel的VBA关于如何后台打开工作簿并读取里面的数据问题(高手进)_百度...
excel_App.Visible = False '设置Excel为不可见 '打开文件 Set excel_Book = excel_App.Workbooks.Open("G:\\1.XLS") '工作簿实例 Set excel_sheet = excel_Book.Worksheets("Sheet2") '数据表实例 excel_sheet.Range("C1").Value = "你好!" '设置单元格C1的值为"你好!"excel...

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

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

excel的vba问题,后台调用其他excel数据
不打开表格取其它工作表的数据:Sub a()Dim wb As WorkbookDim str, xstr = "D:\\d\\123.xlsx"Set wb = GetObject(str) '取得123这个文件x = wb.Sheets(1).Cells(1, 1) '取得123文件A1的值Sheets(1).Range("b1") = x '把值取出来放到新的工作表End Sub ...

Excel获取指定路径的文件名vba代码
首先按“Alt+F11”组合键,Excel2003打开代码编辑器,单击“插入”菜单-“模块”,双击插入的模块,在右侧的代码窗口中输入:Sub Excel_Partner()Dim myFilename As String, myPath As String ChDir Application.DefaultFilePath ‘改变默认路径 myPath = "C:\\" ‘指定的任意路径 SendKeys myPath & ...

相似回答