可以用getobject函数,不打开文档,调用数据,例:
-----------------
Dim iBk As Workbook, iPath$, iBkName$
iPath = ThisWorkbook.Path '设置要读取数据的文件路径
ibknm = "Book1.xls" '设置要读取数据的文件名
Set iBk = GetObject(iPath & "\" & ibknm)
'……,这里是读取数据和处理数据的语句
iBk.Close False
Set iBk = Nothing
------------
其实是打开了这个文件,但是不显示窗口
如果要打开多个文档,就套入循环,你的问题太笼统,不能给出具体代码
----------
VBA与VB的区别就在于,VBA必须依赖于其他软件才能生存,如果要脱离单独运行,那就是VB程序了,所以你的第一个要求不行。
文件的筛选可以做到,可以用内置的文件打开对话框(Dialog 对象),也可以使用代码背后读取合适的文件