Sub test()
Application.ScreenUpdating = False
Dim f, wb, x
f = Application.GetOpenFilename("Excel2003文件,*.xls,Word文件,*.doc,文本文件,*.txt", 1, MultiSelect:=True)
For x = 1 To UBound(f)
Set wb = Workbooks.Open(f(x))
Next
End Sub
1我不理解当初你写For x = 1 To UBound(f) 是什么意思
2UBOUND(f) 我理解的f 是个变量名称 你给我做的就是F就代表某EXCEL文件 然后是EXCEL的数量的最大数 问题我不知道循环这个又什么用 (我理解对不)
问题一:
f = Application.GetOpenFilename;这句后F是一个一维数组,分别为你选中的文件;
你可以输入代码PRINT F(1) 这个就会显示第一个文件;PRINT (2) 就会显示你选中的第二个文件
如果我们选中的是2个文件,那么 UBound(f)就为2了。
定义 For x = 1 To UBound(f),是为了后面我要一个个的用WORKBOOKS.OPEN打开这些文件!
就是这句:Set wb = Workbooks.Open(f(x))
问题二:
假设我们都不知道自己选了多少文件,但是F知道。那么F的最大值为多少呢,就为UBound(f),意思就是f这个数组的最大值,还有其它用法,顺便提一下,如下:
'Lbound(数组) 可以获取数组的最小下标(编号)
'Ubound(数组) 可以获取数组的最大上标(编号)
'Ubound(数组,1) 可以获得数组的行方面(第1维)最大上标
'Ubound(数组,2) 可以获得数组的列方向(第2维)的最大上标
我也不知道自己解释清楚没有,不知道你有没有学习过数组,如果还没有学过,可能理解起来有点困难。
还有问题追加就是;
追问你可以输入代码PRINT F(1) 这个就会显示第一个文件;PRINT (2) 就会显示你选中的第二个文件
如果我们选中的是2个文件,那么 UBound(f)就为2了。
能不能帮我写个语言 让我看看效果 (因为我不会写,脑子一团浆糊)
可以看下附件与GIF,分别演示4个功能:
1、查看我们选了几个文件
2、查看我们选的第一个1文件
3、查看我们选的第二个文件
4、打开第一个文件Workbooks.Open (f(1))
Application.ScreenUpdating = False
Dim f, wb, x
f = Application.GetOpenFilename("Excel2003文件,*.xls,Word文件,*.doc,文本文件,*.txt", 1, MultiSelect:=True)
MsgBox UBound(f) '查看我们选了几个文件
MsgBox f(1) ''查看我们选的第一个1文件
MsgBox f(2) ''查看我们选的第二个文件
Workbooks.Open (f(1))
End Sub
可能返回多个文件,
For x = 1 To UBound(f)
这样就是每个都打开追问
运行后出现这个 怎么叫每个都打开
1我打个多个文件时 用Ctrl的
For x = 1 To UBound(f)
Set wb = Workbooks.Open(f(x)) //打开每一个文件
Next