excel遍历文件|Excel 如何遍历一个文件夹下的所有文件并得到文件名

excel遍历文件|Excel 如何遍历一个文件夹下的所有文件并得到文件名的第1张示图

㈠ excel遍历本文件夹改成遍历本文件夹及所有子文件夹

代码太长,希望你理解我下面的方法,先看看你的代码结构:

mypath=ThisWorkbook.Path&""myname=Dir(mypath&"*.xl*")DoWhilemyname<>""'……myname=Dir()Loop

修改为下面的结构:

mypath=ThisWorkbook.Path&""Shell"cmd.exe/cdir"&mypath&"*.xls?/b/s>c:1.txt"WithWorkbooks.Open("c:1.txt")arr=ActiveSheet.UsedRange.CloseEndWithForEachmynameInarr'……Next

哦,还有一点,我的代码循环里面的myname是带了完整路径的。

㈡ Excel 请问如何遍历同一个文件夹内的Excel查找相关的内容

请参考:Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address(0, 0) <> "B1" Then Exit Sub If Target = "" Then Exit Sub Dim Fso As Object, File As Object, cnn As Object, rs As Object, rst As Object, SQL$, s$, m&, arr, brr(1 To 1000, 1 To 3), t$ t = "" & Target Set Fso = CreateObject("Scripting.FileSystemObject") Set cnn = CreateObject("adodb.connection") For Each File In Fso.GetFolder(ThisWorkbook.Path).Files If File.Name Like "*.xls*" And InStr(File.Name, ThisWorkbook.Name) = 0 Then Set cnn = CreateObject("adodb.connection") cnn.Open "Provider=Microsoft.Ace.OLEDB.12.0;Extended Properties=excel 12.0;Data Source=" & File Set rs = cnn.OpenSchema(20) Do Until rs.EOF If rs.Fields("TABLE_TYPE") = "TABLE" Then s = Replace(rs("TABLE_NAME").Value, "'", "") If Right(s, 1) = "$" Then SQL = "select * from [" & s & "] where 路径 like '%" & t & "'" Set rst = cnn.Execute(SQL) If Not rst.EOF Then m = m + 1 brr(m, 1) = Right$(Split(File.Name, ".")(0), 2) & "月" & Replace(s, "$", "") brr(m, 2) = rst.Fields(0) brr(m, 3) = rst.Fields(1) End If End If End If rs.MoveNext Loop End If Next ActiveSheet.UsedRange.Offset(2).ClearContents If m > 0 Then Range("A3").Resize(m, 3) = brr rs.Close rst.Close cnn.Close Set rs = Nothing Set rst = Nothing Set cnn = Nothing Set Fso = NothingEnd Sub

㈢ Excel 如何遍历一个文件夹下的所有文件并得到文件名

如要提取“我的文档”下所有文件名,先定义一个名称,如Files=FILES("C:\Users\用户名\Documents\"&"*.*")然后比如A列是序号,B列是文件名,就在B2中输入公式:=HYPERLINK("C:\Users\用户名\Documents\"&INDEX(Files,ROW(A1)),INDEX(Files,ROW(A1)))下拉

㈣ EXCEL VBA 遍历所有文件夹和子文件夹的文件中指定单元格中的数据,汇总到一张工作表中,

把需要遍历的所有路径,写到一个excel表里不就行了,每次从这个表里调用路径去遍历。或者dir /b /s *.xls*>d:\1.txt,把这个1.txt内容读入表或数组,遍历这个就行了。

㈤ 如何用python遍历文件夹下的所有excel文件

大数据处理经常要用到一堆表格,然后需要把数据导入一个list中进行各种算法分析,简单讲一下自己的做法:

1.如何读取excel文件

网上的版本很多,在xlrd模块基础上,找到一些源码:

[python]view plain

importxdrlib,sys

importxlrd

defopen_excel(file="C:/Users/flyminer/Desktop/新建MicrosoftExcel工作表.xlsx"):

data=xlrd.open_workbook(file)

returndata

#根据索引获取Excel表格中的数据参数:file:Excel文件路径colnameindex:表头列名所在行的所以,by_index:表的索引

defexcel_table_byindex(file="C:/Users/flyminer/Desktop/新建MicrosoftExcel工作表.xlsx",colnameindex=0,by_index=0):

data=open_excel(file)

table=data.sheets()[by_index]

nrows=table.nrows#行数

ncols=table.ncols#列数

colnames=table.row_values(colnameindex)#某一行数据

list=[]

forrownuminrange(1,nrows):

row=table.row_values(rownum)

ifrow:

app={}

foriinrange(len(colnames)):

app[colnames[i]]=row[i]

list.append(app)

returnlist

#根据名称获取Excel表格中的数据参数:file:Excel文件路径colnameindex:表头列名所在行的所以,by_name:Sheet1名称

defexcel_table_byname(file="C:/Users/flyminer/Desktop/新建MicrosoftExcel工作表.xlsx",colnameindex=0,by_name=u'Sheet1'):

data=open_excel(file)

table=data.sheet_by_name(by_name)

nrows=table.nrows#行数

colnames=table.row_values(colnameindex)#某一行数据

list=[]

forrownuminrange(1,nrows):

row=table.row_values(rownum)

ifrow:

app={}

foriinrange(len(colnames)):

app[colnames[i]]=row[i]

list.append(app)

returnlist

defmain():

tables=excel_table_byindex()

forrowintables:

print(row)

tables=excel_table_byname()

forrowintables:

print(row)

if__name__=="__main__":

main()

最后一句是重点,所以这里也给代码人点个赞!

最后一句让代码里的函数都可以被复用,简单地说:假设文件名是a,在程序中import a以后,就可以用a.excel_table_byname()和a.excel_table_byindex()这两个超级好用的函数了。

2.然后是遍历文件夹取得excel文件以及路径:,原创代码如下:

[python]view plain

importos

importxlrd

importtest_wy

xpath="E:/唐伟捷/电力/电力系统总文件夹/舟山电力"

xtype="xlsx"

typedata=[]

name=[]

raw_data=[]

file_path=[]

defcollect_xls(list_collect,type1):

#取得列表中所有的type文件

foreach_elementinlist_collect:

ifisinstance(each_element,list):

collect_xls(each_element,type1)

elifeach_element.endswith(type1):

typedata.insert(0,each_element)

returntypedata

#读取所有文件夹中的xls文件

defread_xls(path,type2):

#遍历路径文件夹

forfileinos.walk(path):

foreach_listinfile[2]:

file_path=file[0]+"/"+each_list

#os.walk()函数返回三个参数:路径,子文件夹,路径下的文件,利用字符串拼接file[0]和file[2]得到文件的路径

name.insert(0,file_path)

all_xls=collect_xls(name,type2)

#遍历所有type文件路径并读取数据

forevey_nameinall_xls:

xls_data=xlrd.open_workbook(evey_name)

foreach_sheetinxls_data.sheets():

sheet_data=test_wy.excel_table_byname(evey_name,0,each_sheet.name)

#请参考读取excel文件的代码

raw_data.insert(0,sheet_data)

print(each_sheet.name,":Datahasbeendone.")

returnraw_data

a=read_xls(xpath,xtype)

print("Victory")

欢迎各种不一样的想法~~

㈥ VBA编程,遍历文件夹下的excel表,对每个excel表遍历做一些操作

(一)FileSystemObject对象模型包含了下面的对象和集合:

·FileSystemObject主对象,包含用来创建、删除和获得有关信息,以及用来操作驱动器、文件夹和文件的方法和属性。

·Drive 对象,包含用来获得信息的方法和属性,这些信息是关于连接在系统上的驱动器的,如有多少可用空间等。驱动器不一定是硬盘,也可以是CD-ROM、U盘甚至是通过网络在逻辑上连接的硬盘(如公司里部门共享的服务器网络硬盘)。

·Drives 集合,提供驱动器的列表,这些驱动器以实物或在逻辑上与系统相连接。Drives集合包括所有驱动器,与类型无关。

·File 对象,包含用来创建、删除或移动文件的方法和属性。

·Files 集合,提供包含在文件夹内的所有文件的列表。

·Folder 对象,包含用来创建、删除或移动文件夹的方法和属性。

·Folders 集合,提供包含在文件夹内的所有文件夹的列表。

·TextStream 对象,用来读写文本文件。

(二)FileSystemObject对象的方法

FileSystemObject对象模型中有些功能是重复的,如可用FileSystemObject对象的CpoyFile方法,也可用File对象的Copy方法来复制文件。下面先介绍FileSystemObject对象的方法。

1、GetDrive 方法

语法:object.GetDrive drivespec

drivespec参数可以是一个驱动器字符(c)、一个驱动器字符加一个冒号(c:)、一个驱动器字符加冒号和路径分隔符(c:)或任何网络共享的说明(file://computer2/share1)。

作用:返回一个与指定路径中的驱动器相对应的 Drive 对象。

示例:

Dim dSet d = fso.GetDrive("D:") '变量d就代表了驱动器D对象

如果 drivespec 不符合任何一种可以接受的形式或者不存在,则发生一个错误。

注意:为简洁,示例中都假定fso是已经创建的FileSystemObject对象

2、GetDriveName 方法

语法:object.GetDriveName(path)

作用:返回一个包含指定路径的驱动器名字的字符串。

示例:

Debug.Print fso.GetDriveName("c:est.txt") '立即窗口显示"c:"

3、GetExtensionName 方法

语法:object.GetExtensionName(path)

作用:返回一个包含路径中最后部件扩展名的字符串。

示例:

Debug.Print fso.GetExtensionName("c:est.txt") '立即窗口显示"txt"

4、GetBaseName 方法

语法:object.GetBaseName(path)

作用:返回一个包含路径中最后部件的基本名字(去掉任何文件扩展名)的字符串。

示例:

Debug.Print fso.GetBaseName("c:abcest.txt") '立即窗口显示"test"

5、GetAbsolutePathName 方法

语法:object.GetAbsolutePathName(pathspec)

作用:从提供的路径说明中返回一个完整、明确的路径。

示例:如果pathspec为空字符串"",则返回当前路径。假设当前路径为C:Documents and SettingsycMy Documents

Debug.Print fs.GetAbsolutePathName("") '显示C:Documents and SettingsycMy DocumentsDebug.Print fs.GetAbsolutePathName("c:..") '显示C:Documents and Settingsyc,即上层目录Debug.Print fs.GetAbsolutePathName("abc") '显示C:Documents and SettingsycMy DocumentsabcDebug.Print fs.GetAbsolutePathName("c:est.txt") '显示C:est.txt

6、GetFile 方法

语法:object.GetFile(filespec)

作用:返回一个和指定路径中文件相对应的 File 对象。

示例:

Dim fSet f = fso.GetFile("c:est.txt") '变量f就代表了文件test.txt对象

注意:如果指定的文件不存在,则发生一个错误。

7、GetFileName 方法

语法:object.GetFileName(pathspec)

作用:返回指定路径中的最后部件,该路径不是驱动器说明的一部分。

示例:

Debug.Print fso.GetFileName("c:abcest.txt") '立即窗口显示"test.txt"

8、GetFolder 方法

语法:object.GetFolder(folderspec)

作用:返回一个和指定路径中文件夹相对应的 Folder 对象。

示例:

Dim fdSet fd = fso.GetFolder("c:windows") '变量f就代表了文件夹windows对象

注意:如果指定的文件夹不存在,则发生一个错误。

9、GetSpecialFolder 方法

语法:object.GetSpecialFolder(folderspec)

作用:返回指定的特殊文件夹。

说明:folderspec 参数可为任何的下列值:

WindowsFolder 0 Windows 文件夹,包含由 Windows 操作系统安装的文件。 SystemFolder 1 系统文件夹,包含库、字体、设备驱动程序。 TemporaryFolder 2 Temp 文件夹,用于存储临时文件。它的路径在 TMP 环境变量中。

10、GetParentFolderName 方法

语法:object.GetParentFolderName(path)

作用:返回一个包含指定路径最后部件父文件夹名字的字符串。

示例:

Debug.Print fso.GetParentFolderName("c:mpest.txt") '显示"c:mp"

11、GetTempName 方法

语法:object.GetTempName

作用:返回一个随机产生的临时文件或文件夹的名字,该名字在执行需要临时文件或文件夹的操作时有用。

说明:GetTempName 方法不产生一个文件,它仅提供一个临时文件名字,该名字可被 CreateTextFile 用于创建一个文件。

示例:

Debug.Print fso.GetTempName '显示"radB0208.tmp",每次都会变。

12、BuildPath 方法

语法:object.BuildPath(path, name)

作用:追加一个名字到一个已经存在的路径。

示例:

Debug.Print fso.BuildPath("c:mp", "abc") '显示"c:mpabc"

13、CreateFolder 方法

语法:object.CreateFolder(foldername)

作用:创建一个文件夹。

注意:如果指定的文件夹已经存在,则发生一个错误。

示例:

fso.CreateFolder("c:myfolder") '在C盘创建一个myfolder文件夹

14、CopyFolder 方法

语法:object.CopyFolder source, destination[, overwrite]

source 必需的。指明一个或多个被复制文件夹的字符串文件夹说明,可以包括通配符。 destination 必需的。指明 source 中被复制文件夹和子文件夹的接受端的字符串,不允许有通配符。 overwrite 可选的。Boolean 值,它表示已存在的文件夹是否被覆盖。如果为 True,文件被覆盖。 如果为 False,文件不被覆盖。缺省值为 True。

作用:复制一个文件夹到另一个地方。

15、MoveFolder 方法

语法:object.MoveFolder source, destination

参数与CopyFolder的前两个一样。

作用:将一个或多个文件夹从一个地方移动到另一个地方。

16、DeleteFolder 方法

语法:object.DeleteFolder folderspec[, force]

folderspec 必需的。要删除的文件夹的名字。 Folderspec 可以在最后的路径部件中包含通配符。 force 可选的。Boolean 值,如果要删除具有只读属性设置的文件夹,其值为 True, 如果值为 False (缺省),则不能删除具有只读属性设置的文件夹。

作用:删除一个指定的文件夹和它的内容。

说明:如果没有发现相匹配的文件夹,则发生一个错误。DeleteFolder 方法停止在它遇到的第一个错误上,不要尝试回卷或撤消错误发生前所做的任何改变。

示例:

fso.DeleteFolder("c:mp")

17、FolderExists 方法

语法:object.FolderExists(folderspec)

作用:如果指定的文件夹存在返回 True,不存在返回 False。

18、DriveExists 方法

语法:object.DriveExists(drivespec)

作用:如果指定的驱动器存在,返回 True,如果不存在返回 False。

19、FileExists 方法

语法:object.FileExists(filespec)

作用:如果指定的文件存在,返回 True,若不存在,则返回 False。

20、CreateTextFile 方法

语法:object.CreateTextFile(filename[, overwrite[, unicode]])

overwrite 可选的。Boolean 值,表示一个已存在文件是否可被覆盖。如果可被覆盖其值为 True, 其值为 False 时不能覆盖。如果它被省略,则已存在文件不能覆盖。unicode 可选的。Boolean 值,表示文件是作为一个 Unicode 文件创建的还是作为一个ASCII 文件创建的。 如果作为一个 Unicode 文件创建,其值为 True,作为一个 ASCII 文件创建, 其值为 False。如果省略的话,则认为是一个 ASCII 文件。

作用:创建一个指定的文件名并且返回一个用于该文件读写的 TextStream 对象。

示例:

Dim fSet f = fso.CreateTextFile("c:estfile.txt", True)

21、OpenTextFile 方法

语法:object.OpenTextFile(filename[, iomode[, create[, format]]])

作用:打开一个指定的文件并返回一个 TextStream 对象,该对象可用于对文件进行读、写、追加操作。

说明:·iomode 参数可为下面设置值中的任何值:

ForReading 1 打开一个只读文件,不能对此文件进行写操作。 ForWriting 2 打开一个用于写操作的文件。如果和此文件同名的文件已存在,则覆盖以前内容。 ForAppending8 打开一个文件并写到文件的尾部。

注意:在VBA帮助里是没有ForWriting的,其实是有的,VBA帮助也是有错误的。另外,这些常数在使用前要先声明,或者直接用数值。

·create可选的,它表示如果指定的 filename 不存在是否可以创建一个新文件。如果创建新文件,其值为 True。若不创建文件其值为 False。缺省值为 False。

·Format参数可为下面设置值中的任何值:

TristateUseDefault –2 使用系统缺省打开文件。 TristateTrue –1 以 Unicode 格式打开文件。 TristateFalse 0 以 ASCII 格式打开文件。

示例:

Dim fSet f = fso.OpenTextFile("c:estfile.txt", 2, True)

或者:

Const ForWriting = 2Set f = fso.OpenTextFile("c:estfile.txt", ForWriting, True)

这两者功能是一样的,一个声明了常量,一个直接用数值。都是在C盘创建文件testfile.txt(如不存在),或以写的方式打开(如存在)。

22、CopyFile 方法

语法:object.CopyFile source, destination[, overwrite]

作用:把一个或多个文件从一个地方复制到另一个地方。

说明:需要注意的地方与CopyFolder是完全类似的。

示例:

fso.file "c:estfile.txt", "f:abc" '若abc不存在则出错。fso.file "c:estfile.txt", "f:abc" '若abc不存在则复制testfile.txt到F盘文件名变为abc,若abc存在,出错,因为是一个目录。

23、MoveFile 方法

语法:object.MoveFile source, destination

作用:将一个或多个文件从一个地方移动到另一个地方。

说明:需要注意的地方与MoveFolder是完全类似的。

24、DeleteFile 方法

语法:object.DeleteFile filespec[, force]

作用:删除一个指定的文件。

说明:force 可选的。如果要删除具有只读属性设置的文件,其值为 True。如果其值为 False (缺省),则不能删除具有只读属性设置的文件。

(三)处理文件夹

1、获取文件夹的信息

可以利用Folder对象来获取有关文件夹的信息,Folder对象的属性有:

Attributes 属性 文件夹的属性。可为下列值中的任意一个或任意的逻辑组合: Normal 0 一般文件。未设置属性。 ReadOnly 1 只读文件。属性为读/写。 Hidden 2 隐藏文件。属性为读/写。 System 4 系统文件。属性为读/写。 Volume 8 磁盘驱动器卷标。属性为只读。 Directory 16 文件夹或目录。属性为只读。 Archive 32 自上次备份后已经改变的文件。属性为读/写。 Alias 64 链接或快捷方式。属性为只读。 Compressed 128 压缩文件。属性为只读。 Name 属性 文件夹名字。ShortName 属性 较早的 8.3 命名约定的程序所使用的短名字。Type 属性 文件夹类型。Files 属性 所有 File 对象组成的 Files 集合,这些 File 对象包含在指定的文件夹中 ──包括设置了隐藏和系统文件属性的那些文件。Drive 属性 文件夹所在的驱动器符号。IsRootFolder 属性 文件夹是否是根文件夹。ParentFolder 属性 文件夹的父文件夹对象。SubFolders 属性 文件夹的子文件夹集合。Path 属性 文件夹的路径。ShortPath 属性 较早的 8.3 文件命名约定的程序所使用的短路径。Size 属性 文件夹的大小,以字节为单位。DateCreated 属性 文件夹的创建日期和时间。DateLastModified 属性 最后一次修改文件夹的日期和时间。DateLastAccessed 属性 最后一次访问文件夹的日期和时间。

属性的使用和Drive对象是一样的,可以用GetFolder获取一个Folder对象,也可以用FileSystemObject对象的CreateFolder 方法创建一个Folder对象。

2、Folder对象的方法

⑴Copy 方法

语法:object.Copy destination[, overwrite]

作用:把一个指定的文件夹从一个地方复制到另一个地方。

说明:Copy 方法的作用与FileSystemObject对象的CopyFolder 方法是一样的,不同在于后者可一次复制多个文件夹。

⑵Move 方法

语法:object.Move destination

作用:将一个指定的文件夹从一个地方移动到另一个地方。

说明:Move 方法的作用与FileSystemObject.MoveFolder 是一样的。不同在于后者可一次移动多个文件夹。

⑶Delete 方法

语法:object.Delete force

作用:删除一个指定的文件夹。

说明:Delete 方法的作用与FileSystemObject.DeleteFolder 是一样的。

⑷CreateTextFile 方法

语法:object.CreateTextFile(filename[, overwrite[, unicode]])

作用:与FileSystemObject对象的CreateTextFile 方法是一样的。

示例:

Setfd=fs.getfolder("c:mp")Setf=fd.CreateTextFile("testfile.txt",True)

可在C盘tmp文件夹下创建testfile.txt文件。

(四)处理文件

1、获取文件的信息

可以利用File对象来获取有关文件的信息,File对象的属性和Folder的属性是完全一样的,只是少了Files 属性、IsRootFolder 属性、SubFolders 属性这3个属性。这里就不列了。

2、File对象的方法

⑴Copy 方法

⑵Move 方法

⑶Delete 方法

以上三种方法与Folder的是完全类似的,语法也一样,同样也可用FileSystemObject对象相应的方法代替。

⑷OpenAsTextStream 方法

语法:object.OpenAsTextStream([iomode, [format]])

作用:打开一个指定的文件并返回一个 TextStream 对象,该对象可用来对文件进行读、写、追加操作。

说明:此方法与FileSystemObject对象的 OpenTextFile 方法相同的功能。参数也是一致的。

总结

从上面的介绍,我们看到使用FileSystemObject对象处理文件、文件夹比使用VBA语句的方法具有更容易存在的特点。这是因为FileSystemObject对象使用了面向对象的语法。另外FileSystemObject对象处理文本文件毫不逊色于VBA语句,非常值得推荐。唯一的问题是不能处理二进制文件,微软在有关文档中称计划将来支持二进制文件,不过应该只是计划而已。

通过介绍完FileSystemObject的知识,可参考以下代码是通过FileSystemObject对象模型遍历指定文件夹,然后打开该文件和另外的excel,实现两个excel的数据之间操作。

SubTest()Application.DisplayAlerts=False'禁止信息提示Application.ScreenUpdating=False'禁止屏幕刷新mypath=Sheets(1).Range("B2").Value'文件夹路径ForEachDeleFileInCreateObject("scripting.filesystemobject").getfolder(Sheets(1).Range("B3").Value).Files'遍历文件夹下的所有文件DeleFile.Delete'删除每遍历一次的文件NextForEachmyfileInCreateObject("scripting.FileSystemObject").getfolder(mypath).Files'遍历文件夹下的所有文件Ifmyfile.NameLike"*.xlsx*"Then'筛选excel文件Filename=Mid(myfile.Name,1,(InStr(myfile.Name,"_")-1))'获取文件名WithWorkbooks.Open(Op.Range("B1").Value&""&Op.Range("C1").Value)'打开另一个excel文件为ASetwb=Workbooks(Op.Range("C1").Value).Worksheets(1)'设置A的workbook为wbWithGetObject(myfile)'打开当前遍历的excel文件为Bwb.Range("A1").Value=.Sheets(1).Range("C1").Value'将B的C1单元格值赋给A的A1单元格.Close'关闭BEndWith.SaveAsFilename:=Op.Range("B3")&""&Filename&".xlsx",_FileFormat:=xlOpenXMLWorkbook,CreateBackup:=False'另存为excel文件.CloseFalse'关闭AEndWithEndIfNextApplication.DisplayAlerts=True'恢复信息提示Application.ScreenUpdating=True'恢复屏幕刷新EndSub

㈦ excel 遍历文件夹 宏命令

VBA遍历文件夹常用有三种方法,这三种方法中,filesearch不适合2007和2010版本,而且速度比较慢,递归法速度也慢。只有用DIR加循环的方法,速度飞快。下面是三种方法的代码:1、filesearch法Sub test3()Dim wb As WorkbookDim i As LongDim tt = Timer With Application.FileSearch '调用fileserch对象 .NewSearch '开始新的搜索 .LookIn = ThisWorkbook.path '设置搜索的路径 .SearchSubFolders = True '搜索范围包括 LookIn 属性指定的文件夹中的所有子文件夹 .Filename = "*.xls" '设置搜索的文件类型 ' .FileType = msoFileTypeExcelWorkbooks If .Execute() > 0 Then '如果找到文件 For i = 1 To .FoundFiles.Count 'On Error Resume Next Cells(i, 1) = .FoundFiles(i) '把找到的文件放在单元格里 Next i Else MsgBox "没找到文件" End If End With MsgBox Timer – tEnd Sub2、递归法 Sub Test()Dim iPath As String, i As LongDim tt = Timer With Application.FileDialog(msoFileDialogFolderPicker) .Title = "请选择要查找的文件夹" If .Show Then iPath = .SelectedItems(1) End If End With If iPath = "False" Or Len(iPath) = 0 Then Exit Sub i = 1 Call GetFolderFile(iPath, i) MsgBox Timer – t MsgBox "文件名链接获取完毕。", vbOKOnly, "提示" End SubPrivate Sub GetFolderFile(ByVal nPath As String, ByRef iCount As Long)Dim iFileSys'Dim iFile As Files, gFile As File'Dim iFolder As Folder, sFolder As Folders, nFolder As Folder Set iFileSys = CreateObject("Scripting.FileSystemObject") Set iFolder = iFileSys.GetFolder(nPath) Set sFolder = iFolder.SubFolders Set iFile = iFolder.Files With ActiveSheet For Each gFile In iFile ' .Hyperlinks.Add anchor:=.Cells(iCount, 1), Address:=gFile.path, TextToDisplay:=gFile.Name iCount = iCount + 1 Next End With '递归遍历所有子文件夹 For Each nFolder In sFolder Call GetFolderFile(nFolder.path, iCount) NextEnd Sub 3、dir循环法Sub Test() '使用双字典,旨在提高速度 Dim MyName, Dic, Did, i, t, F, TT, MyFileName 'On Error Resume Next Set objShell = CreateObject("Shell.Application") Set objFolder = objShell.BrowseForFolder(0, "选择文件夹", 0, 0) If Not objFolder Is Nothing Then lj = objFolder.self.path & "\" Set objFolder = Nothing Set objShell = Nothing t = Time Set Dic = CreateObject("Scripting.Dictionary") '创建一个字典对象 Set Did = CreateObject("Scripting.Dictionary") Dic.Add (lj), "" 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 Did.Add ("文件清单"), "" '以查找D盘下所有EXCEL文件为例 For Each Ke In Dic.keys MyFileName = Dir(Ke & "*.xls") Do While MyFileName <> "" Did.Add (Ke & MyFileName), "" MyFileName = Dir Loop Next For Each Sh In ThisWorkbook.Worksheets If Sh.Name = "XLS文件清单" Then Sheets("XLS文件清单").Cells.Delete F = True Exit For Else F = False End If Next If Not F Then Sheets.Add.Name = "XLS文件清单" End If Sheets("XLS文件清单").[A1].Resize(Did.Count, 1) = WorksheetFunction.Transpose(Did.keys) TT = Time – t MsgBox Minute(TT) & "分" & Second(TT) & "秒"End Sub

㈧ 怎么遍历Excel文件的每个sheet页

修改为:123456789101112131415 Sub prt()Dim ws As Workbook, path$, d$Application.ScreenUpdating = Falsepath = ThisWorkbook.path & "\"d = Dir(path & "*.xls")Do While d <> "" If d <> ThisWorkbook.Name Then Set ws = Workbooks.Open(path & d) ws.Sheets("sheet2").PrintOut ws.Close False End If d = DirLoopApplication.ScreenUpdating = TrueEnd Sub

㈨ excel vba遍历某文件下所有excel表,(表格内容一样,数据不同),并计算所有表格中指定同一单元格的和。

首先要打开你需要的数个文件,而每个文件假设在VBA所在工作簿的 A列,从A1开始,并且文件名排列下去,中间没有空白单元格,直到空白的单元格结束。需要求和的是每个文件内的shee1的A2单元格,最后合计数在程序所在文件的b1单元格public sub 遍历()dim i as integerdim sumnumber as longdim filename as stringi = 1do until cells(i,1)=“”cells(i,1) = filenameworkboos.open filename: = filenameWindows(filename).Activatesumnumber = sumnumber + sheets("sheet1").range("a2")activewindows.closei = i+1loopsumnumber = range("b1")end sub

未经允许不得转载:山九号 » excel遍历文件|Excel 如何遍历一个文件夹下的所有文件并得到文件名

赞 (0)