|
Sub HzWb()
Dim bt As Range, r As Long, c As Long
r = 1 '1 是表头的行数
c = 8 '8 是表头的列数
Range(Cells(r + 1, "A"), Cells(65536, c)).ClearContents ' 清除汇总表中原表数据
Application.ScreenUpdating = False
Dim FileName As String, wb As Workbook, Erow As Long, fn As String, arr As Variant
FileName = Dir(ThisWorkbook.Path & "\*.xls")
Do While FileName <> ""
If FileName <> ThisWorkbook.Name Then ' 判断文件是否是本工作簿
Erow = Range("A1").CurrentRegion.Rows.Count + 1 ' 取得汇总表中第一条空行行号
fn = ThisWorkbook.Path & "\" & FileName
Set wb = GetObject(fn) ' 将fn 代表的工作簿对象赋给变量
Set sht = wb.Worksheets(1) ' 汇总的是第1 张工作表
' 将数据表中的记录保存在arr 数组里
arr = sht.Range(sht.Cells(r + 1, "A"), sht.Cells(65536, "B").End(xlUp).Offset(0, 8))
' 将数组arr 中的数据写入工作表
Cells(Erow, "A").Resize(UBound(arr, 1), UBound(arr, 2)) = arr
wb.Close False
End If
FileName = Dir ' 用Dir 函数取得其他文件名,并赋给变量
Loop
Application.ScreenUpdating = True
End Sub
请高手帮我详细解释一下,我刚刚读到这页,新手一只,彻底崩溃,我请教如下句法:
1、 FileName = Dir(ThisWorkbook.Path & "\*.xls") 这句里后面那个*.xlls究竟代表把什么赋值给了FileName变量???Dir这个命令返回的是什么,我用msgbox Dir(...)为什么看到的是空白?
2、Do循环结尾处的 FileName=Dir是什么意思,是不是跟前面我问题1里面的*有搭配使用的关系?是不是可以指示FileName挨个换文件并取得路径?
3、将数据写入工作表的那句 Resize(UBound(arr, 1), UBound(arr, 2), 这里面Ubound(arr,1)代表什么意思?
谢谢!
|
|