一、获取文件属性
方式1. 前期绑定:
先引用勾选Microsoft Scripting RunTime
变量定义: Dim objFso As FileSystemObject
Set objFso = New FileSystemObject
方式2 后期绑定:
Dim objFso as Object
Set objFso=CreateObject("Scripting.FileSystemObject")
方法1使用内置函数:
1、文件大小:FileLen(strFile) 返回字节数
2、文件属性:GetAttr(StrFile)
3、文件最后修改时间:FileDateTime(strFile)
4、设置只读和隐藏属性:SetAttr strFile,vbReadOnly +VbHide
方法2使用Fso对象:
set objFile=objFso.GetFile(strFile)
1、文件大小:objFile.Size 返回字节数
2、文件属性:objFile.Attributes
4、文件最后修改时间:objFile.DateLastModified
5、创建时间:objFile.DateCreated
6、设置只读和隐藏属性:SetAttr strFile,vbReadOnly +VbHide
7、判断文件是否存在objFso.FileExists(strPath&"test\test.txt")括号内文件完整路径
Sub FileExist()
Dim objFso As Object
Dim strPath As String
srtPath = ThisWorkbook.Path & Application.PathSeparator
Debug.Print "文件或者文件夹名称"; Tab(60); "是否存在"
Debug.Print srtPath & "Text"; Tab(60); Dir(strPath & "Text\", vbNormal + vbHidden + vbReadOnly) <> ""
Debug.Print srtPath & "Text\Text.txt"; Tab(60); Dir(strPath & "Text\Text.txt", vbNormal + vbHidden + vbReadOnly) <> ""
'创建Fso对象
Set objFso = CreateObject("Scripting.FileSystemObject")
Debug.Print "使用Fso对象"
'Object.FolderExists判断文件夹是否存在
Debug.Print strPath & "Text"; Tab(60); objFso.FolderExists(strPath & "Text")
'Object.FileExists判断文件是否存在
Debug.Print strPath & "Text\Text.txt"; Tab(60); objFso.FileExists(strPath & "Text\Text.txt")
End Sub
Attributes属性
属性之和可以设置文件属性
例如:
objFile.Attributes=4表示设置为系统文件
二、获取驱动器信息:
Dim objFso As New FileSystemObject
Dim objDrive As Object
Set objDrive = objFso.GetDrive("c")
1、判断驱动器是否可用:If objDrive.IsReady = False Then
strInfo = strInfo & "驱动器不可用" & vbCrLf
-
判断驱动器类型: If objDrive.DriveType = 3
其中DriveType 包含以下几种类型:
驱动器类型.png
3.返回卷标:objDrive.VolumeName
4.返回文件系统: objDrive.FileSystem
5.返回总容量:objDrive.TotalSize
6.返回可用容量(范围字节):objDrive.AvailableSpace
7.返回驱动器序列号:objDrive.SerialNumber
Sub GetDriInfo()
Dim objFso As New FileSystemObject
Dim objDrive As Object
Dim strInfo As String
Set objDrive = objFso.GetDrive("c")
If objDrive.IsReady = False Then
strInfo = strInfo & "驱动器不可用!" & vbCrLf
Else
strInfo = strInfo & "是否可用:可用" & vbCrLf
If objDrive.DriveType = 3 Then
'如果是网络盘则返回分享名
strInfo = strInfo & "名称:" & objDrive.ShareName & vbCrLf
Else
'如果是本地硬盘则返回卷标:
strInfo = strInfo & "卷标:" & objDrive.VolumeName & vbCrLf
strInfo = strInfo & "文件系统:" & objDrive.FileSystem & vbCrLf
strInfo = strInfo & "总容量:" & objDrive.TotalSize & vbCrLf
strInfo = strInfo & "可用容量:" & objDrive.AvailableSpace / (1024) & vbCrLf
' strInfo = strInfo & "序列号:" & Hex(objDrive.SerialNumber) & vbCrLf
strInfo = strInfo & "序列号:" & objDrive.SerialNumber & vbCrLf
End If
MsgBox strInfo
End If
Set objDrive = Nothing
Set objFso = Nothing
End Sub
运行结果:
三、使用Fso对象操作文件夹
1.创建文件夹
objFso.CreateFolder "C:\VBA\fso"
2.删除文件夹
3.复制文件夹
4.判断文件夹是否存在
5.移动文件夹
Sub OperateFolder()
'Fso文件夹创建、复制、移动、重命名操作
Dim objFso As New FileSystemObject
Dim objFolder As Object
Dim strPath As String
'Dim objFolder As Object
Dim strInfo As String
srtPath = "C:\VBA\fso文件操作\Test\"
On Error GoTo ErrHand
' Set objFolder = objFso.GetFolder(strPath & "Test\Test1")
If objFso.FolderExists("C:\VBA\fso文件操作\Test\") Then
'1.创建文件夹
objFso.CreateFolder "C:\VBA\fso文件操作\Test\TestA\"
Set objFolder = objFso.GetFolder(strPath & "TestA")
MsgBox objFolder.Name
'2.新建子文件夹
objFolder.SubFolders.Add "A"
'3.复制文件夹
objFolder.Copy "Test\TestA\TestB"
'4.Fso对象复制文件夹到指定位置
objFso.CopyFolder strPath & "Test\TestA\TexdA_Test", strPath & strPath & "Test\TestA"
'5.移动文件夹
objFso.MoveFolder strPath & "Test\TestA\TexdA_Test", strPath & "Test\TestA\TexdA_Test"
End If
Exit Sub
ErrHand:
MsgBox Err.Description
End Sub
四、使用Fso对象操作文件
1.复制文件
2.移动文件
3.删除文件