请帮我翻译一下这段Excel的VBA代码,谢谢!

功能是将一个文件夹中的所有表格汇总到一张目录表中。我要用到这个功能,但是看不懂代码不知道怎么去改。比方说为什么要定义Arr为1-3,为什么i=3,等等……OptionBa... 功能是将一个文件夹中的所有表格汇总到一张目录表中。我要用到这个功能,但是看不懂代码不知道怎么去改。比方说为什么要定义Arr为1-3,为什么 i=3,等等……

Option Base 1
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
Do
With Workbooks.Open(Path & FileName)
With Worksheets(2)
Arr(1) = .Range("C4").Value
Arr(2) = .Range("J4")
Arr(3) = .Range("C5")
End With
.Close True
End With

Sheet1.Cells(i, 1) = Replace(FileName, ".xls", "")
Sheet1.Cells(i, 2).Resize(1, 3) = Arr
FileName = Dir
i = i + 1
Loop Until FileName = "目录.xls"
Application.ScreenUpdating = True
End Sub
说明一下每句的意思是什么,以及哪些是变量我可以修改,哪些是固定代码我不能随便改。。。

我的表格格式和这段代码不一样,而且是工作要用以后可能还要改,所以还是要自己弄懂的。

比如:
Application.ScreenUpdating = False ‘禁止刷屏(但是为什么禁止刷屏呢?)
Path = ThisWorkbook.Path & "\" (我理解是指选取的路径位置和本表格一致,但是"\"表示什么意思呢?)
诸如此类...
展开
 我来答
百度网友72f1a9a
2013-05-07 · TA获得超过227个赞
知道答主
回答量:164
采纳率:0%
帮助的人:178万
展开全部
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

我真无聊·····························
追问
追问2处...
1、Dir是指什么意思呢?
2、如果我要读取n个数据,是否就要将Arr定义为(1 To n)?

谢谢童鞋的偶尔无聊,帮了大忙了T_T内牛满面谢谢谢谢...
追答
1. 在这个代码里Dir用来遍寻整个目录下的文件,第一处的Dir(Path,0)用于取该目录下的第一个文件,循环里的Dir不带任何参数,是取下一个文件
2. 你的回答是正确的

3. 别忘了给分~
niceasdfa11
2013-05-07 · TA获得超过263个赞
知道小有建树答主
回答量:444
采纳率:100%
帮助的人:358万
展开全部
Application.ScreenUpdating = False ‘禁止刷屏(但是为什么禁止刷屏呢?)
你这种汇总会一直打开关闭excel 屏幕会一直闪 而且关闭刷屏可以提高些效率
你可以把false改成true 看看不关闭是什么样子
Path = ThisWorkbook.Path & "\" (我理解是指选取的路径位置和本表格一致,但是"\"表示什么意思呢?)
比如这个文件 ”C:\test\aa.xls"
ThisWorkbook.Path= “c:\test"
你要自己再补一个”\"
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
表里如一
2013-05-07 · 知道合伙人软件行家
表里如一
知道合伙人软件行家
采纳数:2066 获赞数:11638
从事6年生产管理,期间开发了多款小软件进行数据处理和分析,后

向TA提问 私信TA
展开全部
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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
尹水若寒
2013-05-07 · TA获得超过292个赞
知道小有建树答主
回答量:307
采纳率:0%
帮助的人:264万
展开全部
每一句都翻译么?
需要什么功能?我帮你改吧~
追问
说明一下每句的意思是什么,以及哪些是变量我可以修改,哪些是固定代码我不能随便改。。。
追答
不知道你需要什么功能~所以没法具体告诉你
你说你的需求吧~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式