Sub aa()
'首先要引用 microsoft activex data objects...
Dim cnn As New ADODB.Connection
Dim rs As New ADODB.Recordset
For I = 1 To 3
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=d:\" & I & "月.xls;" & _
"Extended Properties=""Excel 8.0;"""
rs.Open "Select * from [" & I & "月$]", cnn, adOpenKeyset, adLockOptimistic
If Worksheets("汇总").Range("a1") = "" Then
Worksheets("汇总").Range("a1") = rs.Fields(0).Name
Worksheets("汇总").Range("b1") = rs.Fields(1).Name
End If
n = Worksheets("汇总").Range("a65536").End(xlUp).Row
Worksheets("汇总").Range("a" & n + 1).CopyFromRecordset rs
rs.Close
cnn.Close
Next I
End Sub
大至就是这样了。
如果表格的格式一模一样
那么在总表里面(假设总表在最前一个表)选择要汇总的一个项
输入
=SUM(
之后点总表后面的那个表的标签
再按住SHIFT,点最后一个表的标签,再点最后一个表总的那个对应的单元格
再输入)回车
结果的形式为
=SUM(SHEET2:SHEET50!C4)
其他单元格的就直接复制这个单元格的公式粘贴过去(注意,不是复制上里面的内容,直接复制粘贴就可以了)。
搞复杂了吧,不需要用ADO,直接filestoopen = Application.GetOpenFilename("Microsoft Office Excel Files (*.*), *.*", , "请选取Excel2003或Excel2007文件", , True),然后循环一下,处理filestoopen