Option Base 1
‘ 定义数组下限,可以从我以前百度知道上查到具体用法。可以删掉这行代码
Sub Sample()
;定义名称为 Sample,可改为你自己的
Dim FileName As String, Path As String, Arr(1 To 3)
’定义变量,Filename用于储存文件名称,Path用于储存文件路径,Arr(1 to 3)3维数组,用于储存C4 J4 C5的数据
Application.ScreenUpdating = False
‘关闭屏幕刷新
Path = ThisWorkbook.Path & "\"
’读取本工作簿所在的路径,存入Path变量,加 “\”是因为ThisWorkbook.Path读出来的路径是不带 “\” 的,这里人为补上。注意:如果你的工作簿在磁盘根目录下,直接用这个代码会出错,因为ThisWorkbook.Path读根目录时是带 “\“,为了宏的完整性,最好加个判断是不是根目录下
FileName = Dir(Path, 0)
‘读取文件名到FileName变量中
i = 3
’i 在下面的代码里代表行数,也就是数据填充从第三行开始
Do
‘循环开始
With Workbooks.Open(Path & FileName)
’打开文件
With Worksheets(2)
‘读取打开的文件里的第2个工作表
Arr(1) = .Range("C4").Value
‘读取J4的数据到变量数组2
Arr(2) = .Range("J4")
‘读取J4的数据到变量数组2
Arr(3) = .Range("C5")
’‘读取C5的数据到变量数组3
End With
.Close True
‘关闭文件
End With
Sheet1.Cells(i, 1) = Replace(FileName, ".xls", "")
’第i行,第1列,填入文件名,去掉后缀名“.xls
Sheet1.Cells(i, 2).Resize(1, 3) = Arr
‘从第i行,第2列开始,一次填入数组变量Arr,
FileName = Dir
’填入下一个文件名,为下一个循环做准备
i = i + 1
‘跳到下一行,为下一个循环做准备
Loop Until FileName = "目录.xls"
’如果是 目录.xls ,则结束循环
Application.ScreenUpdating = True
‘开启屏幕更新
End Sub
我真无聊·····························
Application.ScreenUpdating = False ‘禁止刷屏(但是为什么禁止刷屏呢?)
你这种汇总会一直打开关闭excel 屏幕会一直闪 而且关闭刷屏可以提高些效率
你可以把false改成true 看看不关闭是什么样子
Path = ThisWorkbook.Path & "\" (我理解是指选取的路径位置和本表格一致,但是"\"表示什么意思呢?)
比如这个文件 ”C:\test\aa.xls"
ThisWorkbook.Path= “c:\test"
你要自己再补一个”\"
Sub Sample()
Dim FileName As String, Path As String, Arr(1 To 3)
Application.ScreenUpdating = False '关闭屏幕更新
Path = ThisWorkbook.Path & "\" '获得当前工作簿文件路径
FileName = Dir(Path, 0) '获取当前工作簿路径下面的一个文件名
i = 3 '这个i为你当前工作簿下sheet1表下面的第3行
Do '循环开始
With Workbooks.Open(Path & FileName) '打开文件
With Worksheets(2) '打开sheets(2)表
Arr(1) = .Range("C4").Value '将c4单元格的数值赋予数组arr的第1个元素
Arr(2) = .Range("J4") '将j4单元格的数值赋予数组arr的第2个元素
Arr(3) = .Range("C5") '将c5单元格的数值赋予数组arr的第3个元素
End With
.Close True '关闭文件
End With
Sheet1.Cells(i, 1) = Replace(FileName, ".xls", "") '将文件名后面的.xls去掉写道sheet1的A3单元格.Cells(i, 1)中i=3,1表示第一列A
Sheet1.Cells(i, 2).Resize(1, 3) = Arr '将数组Arr的值写入到sheet1的C4:E4单元格,Sheet1.Cells(i, 2).Resize(1, 3)表示在B3单元格偏移一行,偏移3列的区域
FileName = Dir '获取当前工作簿路径下面的下一个文件名
i = i + 1 '下移一行到第四行
Loop Until FileName = "目录.xls" '如果文件名为"目录.xls"时,退出循环
Application.ScreenUpdating = True '开启屏幕刷新
End Sub
每一句都翻译么?
需要什么功能?我帮你改吧~