
Option Explicit
'1 判断文件夹是否存在
    'dir函数的第二个参数是vbdirectory时可以返回路径下的指定文件和文件夹,如果结果为"",则表示不存在。
   Sub w1()
     If Dir(ThisWorkbook.path & "\2011年报表2", vbDirectory) = "" Then
        MsgBox "不存在"
     Else
        MsgBox "存在"
     End If
   End Sub
解释:dir
在VBA中,Dir函数被用于返回匹配指定文件名模式的第一个文件或目录的名称。下面是Dir函数的语法和使用方法:
Dir([path], [attributes]) 
参数
path(可选):要检索的路径字符串。如果省略,将从当前目录开始搜索。attributes(可选):指定要搜索的文件类型。默认包括普通文件和文件夹。可以通过组合以下常量来定义:
| 常量 | 描述 | 
|---|---|
vbNormal | 文件或目录 | 
vbReadOnly | 只读文件 | 
vbHidden | 隐藏文件或目录 | 
vbSystem | 系统文件或目录 | 
vbArchive | 档案文件 | 
vbDirectory | 返回目录,默认也会返回文件 | 
vbAlias | 返回文件或目录的别名(仅 macOS) | 
vbVolume | 返回卷标(移动设备路径。仅 macOS) | 
返回值
String:文件/目录的名称。如果没有找到匹配的文件,则返回空字符串""。
示例
以下示例演示如何使用Dir函数获取符合条件的文件名:
Sub DirExample()
    Dim MyFile As String
     
     ' 获取C:\Users\YourName\Desktop文件夹下的所有.xls文件名
     MyFile = Dir("C:\Users\YourName\Desktop\*.xls")
     
     ' 循环显示所有满足条件的文件名
     Do While MyFile <> ""
         Debug.Print MyFile
         MyFile = Dir()
     Loop
     
 End Sub
 '2 新建文件夹
    'Mikdir语句可以创建一个文件夹
     Sub w2()
       MkDir ThisWorkbook.path & "\Test"
     End Sub
    案例:
 
Sub CreateNewDirectory()
    Dim PathStr as String
     
     ' 创建名为"NewFolder"的新目录在"C:\Users\YourName\Desktop"
     PathStr = "C:\Users\YourName\Desktop\NewFolder"
     MkDir PathStr
     
 End Sub
  
 '3 删除文件夹
    
    'RmDir语句可以删除一个文件夹,如果想要使用 RmDir 来删除一个含有文件的目录或文件夹,则会发生错误。
    '在试图删除目录或文件夹之前,先使用 Kill 语句来删除所有文件。
    
     Sub w3()
       RmDir ThisWorkbook.path & "\test"
     End Sub
 '4 文件夹重命名
     Sub w4()
       Name ThisWorkbook.path & "\test" As ThisWorkbook.path & "\test2"
     End Sub
      
 '5 文件夹移动
      '同样使用name方法,可以达到移动的效果,而且连文件夹的文件一起移动
     
     Sub w5()
       Name ThisWorkbook.path & "\test2" As ThisWorkbook.path & "\2011年报表\test100"
     End Sub
     
 '6 文件夹复制
         Sub CopyFile_fso()
         Dim fso As Object
         Set fso = CreateObject("Scripting.FileSystemObject")
         fso.CopyFolder ThisWorkbook.path & "\测试新建文件夹", ThisWorkbook.path & "\2011年报表\"
         Set fso = Nothing
         End Sub
解释:Scripting.FileSystemObject
CreateObject("Scripting.FileSystemObject") 在 VBA 中用于创建一个文件系统对象,使代码能够访问和操作计算机上的文件或文件夹。
以下是使用 FileSystemObject 的一些常见操作:
- 获取文件大小
 
要获取文件的大小,可以使用 FilesystemObject 的 GetFile 方法和 Size 属性,例如:
Dim fs As Object
 Set fs = CreateObject("Scripting.FileSystemObject")
 Dim file As Object
 Set file = fs.GetFile("C:\Users\example.txt")
 MsgBox file.Size ' 返回字节数
- 创建文件夹
 
要在指定路径中创建新文件夹,可以使用 Folder 对象的 CreateFolder 方法,例如:
Dim fs As Object
 Set fs = CreateObject("Scripting.FileSystemObject")
 fs.CreateFolder "C:\NewFolder"
- 复制、移动和删除文件
 
要复制文件,使用 FilesystemObject 的 CopyFile 方法:
Dim fs As Object
 Set fs = CreateObject("Scripting.FileSystemObject")
 fs.CreateFolder "C:\NewFolder"
 同样的,要移动文件,使用 MoveFile 方法:
Dim fs As Object
 Set fs = CreateObject("Scripting.FileSystemObject")
 fs.MoveFile "C:\OldFolder\example.txt", "C:\NewFolder\example.txt"
 要删除文件,使用 DeleteFile 方法:
Dim fs As Object
 Set fs = CreateObject("Scripting.FileSystemObject")
 fs.DeleteFile "C:\OldFolder\example.txt"
  
- 复制、移动和删除文件夹
 
要复制文件夹,使用 FilesystemObject 的 CopyFolder 方法:
Dim fs As Object
 Set fs = CreateObject("Scripting.FileSystemObject")
 fs.CopyFolder "C:\OldFolder", "C:\NewFolder"
  
同样的,要移动文件夹,使用 MoveFolder 方法:
Dim fs As Object
 Set fs = CreateObject("Scripting.FileSystemObject")
 fs.MoveFolder "C:\OldFolder", "C:\
'7 打开文件夹
    '使用shell函数桌面管理程序打开文件夹
     Sub w7()
       Shell "explorer.exe " & ThisWorkbook.path & "\2011年报表", 1
     End Sub
解释:shell函数
在 VBA 中,Shell 函数的语法如下:
复制代码
Shell (pathname As String, [windowstyle As VbAppWinStyle = vbMinimizedFocus])
其中 pathname 参数是要运行的可执行文件的完整路径和名称,例如 C:\Program Files\Microsoft Office\Office14\WINWORD.EXE。
windowstyle 参数是可选的,它指定了应用程序窗口的外观。以下是可用的 VbAppWinStyle 常量:
vbHide:隐藏窗口并激活另一个窗口。vbNormalFocus:以正常大小和位置显示窗口,并将焦点设置为窗口。vbMinimizedFocus:以最小化的形式显示窗口,并将焦点设置为窗口。vbMaximizedFocus:以最大化的形式显示窗口,并将焦点设置为窗口。vbNormalNoFocus:以正常大小和位置显示窗口,但不将焦点设置为窗口。vbMinimizedNoFocus:以最小化的形式显示窗口,但不将焦点设置为窗口。
例如,以下代码将打开 Microsoft Word 并最小化它的窗口
Sub OpenWord()
     Shell "C:\Program Files\Microsoft Office\Office14\WINWORD.EXE", vbMinimizedFocus
 End Sub
 请注意,使用 Shell 函数启动另一个应用程序后,您可能需要等待其加载并准备好处理用户输入。您可以使用 VBA 的 Wait 函数来暂停代码执行,例如:



















