ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 116|回复: 0

学习Files集合。只能用For each 不能用for ii= 1 to nn

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-10-10 10:49 | 显示全部楼层 |阅读模式
本帖最后由 ning84 于 2024-10-10 11:17 编辑

Files 集合               描述
在一个文件夹内的所有 File 对象的集合。
说明
下面的代码举例说明了如何获得一个 Files 集合,以及如何用 For Each...Next 语句来访问这个集合中的每个File:


  1. Sub ShowFolderList(folderspec)
  2.     Dim fs, f, f1, fc, s
  3.     Set fs = CreateObject("Scripting.FileSystemObject")
  4.     Set f = fs.GetFolder(folderspec)
  5.     Set fc = f.Files
  6.     For Each f1 in fc
  7.         s = s & f1.name
  8.         s = s & vbCrLf
  9.     Next
  10.     MsgBox s
  11. End Sub

复制代码
image.png




  1. Private Sub ShtNameFolderTraverseFile()
  2.    Dim Str
  3.    Dim Fso As Scripting.FileSystemObject
  4.        Set Fso = New Scripting.FileSystemObject
  5.    Dim oFile As Scripting.File, oFolder As Folder
  6.       
  7.   Dim Rng As Range
  8.       Set Rng = Selection
  9.   Dim Sht As Worksheet
  10.       Set Sht = Rng.Parent
  11.       Str = ThisWorkbook.Path & "" & Sht.Name
  12.       
  13.       Set oFolder = Fso.GetFolder(Str)
  14.   Dim Rr
  15.       Rr = 10
  16.       Set oFile = oFolder.Files(12)
  17.       Debug.Print oFile.Name
  18.       Stop
  19.       
  20.       For ii = 1 To oFolder.Files.Count
  21.            
  22.            Debug.Print oFile.Name, oFile.Path
  23.       Next ii
  24. End Sub
复制代码





  1. Private Sub SelectFolderToSheet()

  2.    Dim Str
  3.    Dim Fso As Scripting.FileSystemObject
  4.        Set Fso = New Scripting.FileSystemObject
  5.    Dim oFile As Scripting.File, oFolder As Folder
  6.    Dim FileDia As FileDialog
  7.    
  8.       Set FileDia = Application.FileDialog(msoFileDialogFolderPicker)
  9.       
  10.       With FileDia
  11.          
  12.           .AllowMultiSelect = True
  13.           .Show
  14.           '.InitialFileName = "C:"
  15.           Str = .SelectedItems(1)
  16.          
  17.       End With
  18.       Set oFolder = Fso.GetFolder(Str)
  19.       Debug.Print oFolder.Name, oFolder.Path
  20.   Dim Rng As Range
  21.       Set Rng = Selection
  22.   Dim Sht As Worksheet
  23.       Set Sht = Rng.Parent
  24.       Sht.Name = oFolder.Name
  25.   Dim Rr
  26.       Rr = 10
  27.       For ii = 1 To oFolder.Files.Count
  28.            Set oFile = oFolder.Files(ii)
  29.            Debug.Print oFile.Name, oFile.Path
  30.       Next ii

  31. End Sub
  32. Private Sub ShtNameFolderTraverseFile()
  33.    Dim Str
  34.    Dim Fso As Scripting.FileSystemObject
  35.        Set Fso = New Scripting.FileSystemObject
  36.    Dim oFile As Scripting.File, oFolder As Folder
  37.       
  38.   Dim Rng As Range
  39.       Set Rng = Selection
  40.   Dim Sht As Worksheet
  41.       Set Sht = Rng.Parent
  42.       With Sht
  43.            .Cells.Clear
  44.            .Cells.Font.Size = 9
  45.       End With
  46.       Str = ThisWorkbook.Path & "" & Sht.Name
  47.       
  48.       Set oFolder = Fso.GetFolder(Str)
  49.   Dim Rr, Kk As Integer, Kk1 As Integer
  50.       Rr = 10
  51.       
  52.       For Each oFile In oFolder.Files
  53.            With Sht
  54.                If InStr(oFile.Name, "Ma") > 0 Then
  55.                 .Cells(Rr + Kk, "A") = oFile.DateLastModified
  56.                 .Cells(Rr + Kk, "B") = oFile.Name
  57.                 .Cells(Rr + Kk, "C") = Round(oFile.Size / 1024 ^ 2, 1)
  58.                 .Cells(Rr + Kk, "Z") = oFile.Path
  59.                 Kk = Kk + 1
  60.                ElseIf InStr(oFile.Name, "Scr") > 0 Then
  61.                 .Cells(Rr + Kk1, "Aa") = oFile.DateLastModified
  62.                 .Cells(Rr + Kk1, "AB") = oFile.Name
  63.                 .Cells(Rr + Kk1, "AC") = oFile.Path
  64.                 Kk1 = Kk1 + 1
  65.                End If
  66.            End With
  67.       Next oFile
  68.       Set Rng = Sht.Cells(Rr, 1).Resize(Kk, 30)
  69.       Rng.Select
  70.       Rng.Sort Sht.Cells(Rr, 1)
  71.       Debug.Print Rng.Address
  72. End Sub
复制代码

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-19 07:44 , Processed in 0.028184 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表