求代码
如果其他的Excel文件都在同一个目录中,
加个模块,复制下面的代码:
'****************************************************************
'功能: 查找指定文件夹含子文件夹内所有文件名(含路径)
'函数名: FileAllArr
'参数1: Filename 需查找的文件夹名 不含最后的"\"
'参数2: FileFilter 需要过滤的文件名,可省略,默认为:[*.*]
'参数3: Liwai 剔除例外的文件名,可省略,默认为:空,一般为:ThisWorkbook.Name
'返回值: 一个字符型的数组
'使用方法:arr = FileAllArr(ThisWorkbook.Path, "*.xls", ThisWorkbook.Name)
Public Function FileAllArr(ByVal Filename As String, Optional ByVal FileFilter As String = "*.*", Optional ByVal Liwai As String = "") As String()
Set Dic = CreateObject("Scripting.Dictionary") '创建一个字典对象
Set Did = CreateObject("Scripting.Dictionary")
Dic.Add (Filename & "\"), ""
i = 0
Do While i < Dic.Count
Ke = Dic.keys '开始遍历字典
MyName = Dir(Ke(i), vbDirectory) '查找目录
Do While MyName <> ""
If MyName <> "." And MyName <> ".." Then
If (GetAttr(Ke(i) & MyName) And vbDirectory) = vbDirectory Then '如果是次级目录
Dic.Add (Ke(i) & MyName & "\"), "" '就往字典中添加这个次级目录名作为一个条目
End If
End If
MyName = Dir '继续遍历寻找
Loop
i = i + 1
Loop
i = 0
Dim arrx() As String
For Each Ke In Dic.keys '以查找总表所在文件夹下所有excel文件为例
MyFileName = Dir(Ke & FileFilter) '过滤器:EXCEL2003为:*.xls,excel2007为:*.xlsx
Do While MyFileName <> ""
If MyFileName <> Liwai Then '排除例外文件
ReDim Preserve arrx(i)
arrx(i) = Ke & MyFileName
i = i + 1
End If
MyFileName = Dir
Loop
Next
FileAllArr = arrx
End Function
'****************************************************************
可以在 Sheet1的代码中写
Sub OPIONA() '//函数实例Dim sP As String, WB As Workbook
sP = "E:\VB合并同规格Excel\tmp" '很多Excel文件的路径,不含最后的\
arr = FileAllArr(sP, "*.xls", ThisWorkbook.Name)
Application.ScreenUpdating = False
For i = 0 To UBound(arr)
'MsgBox arr(I)
Set WB = Workbooks.Open(arr(i))
'你的代码
ThisWorkbook.Worksheets(1).Cells(i + 1, 1).Value = WB.Worksheets(1).Range("T1000").End(xlUp).Value
WB.Windows(1).Visible = False
WB.Close False
Next
Application.ScreenUpdating = True
End Sub
以上文件路径需要自己更改,主要取数的代码解释如下:
ThisWorkbook.Worksheets(1).Cells(i + 1, 1).Value = WB.Worksheets(1).Range("T1000").End(xlUp).Value
从打开文件的T列最后一个数值取值 赋值给操作表的Sheet1中的单元格。
如果数据在每一个Excel中的位置是固定的,比如T10,代码可以直接改为:
ThisWorkbook.Worksheets(1).Cells(i + 1, 1).Value = WB.Worksheets(1).Range("T10").Value
追问我能qq具体问您吗?
追答公司不让上,发邮件吧cnbubble@163.com
追问好的
已发,谢谢
谢了,麻烦你了
温馨提示:答案为网友推荐,仅供参考
第1个回答 2016-03-10
VBA编程思路如下:
通过dir遍历搜索所有文件
依次打开各个文件
将其中的一条数据,赋值给指定工作表
关闭打开的Excel文件
继续下一个文件
具体代码可以搜索百度经验本回答被网友采纳
通过dir遍历搜索所有文件
依次打开各个文件
将其中的一条数据,赋值给指定工作表
关闭打开的Excel文件
继续下一个文件
具体代码可以搜索百度经验本回答被网友采纳