'適用于知識點六的API代碼
Private Declare Function PathFileExists Lib "shlwapi.dll" Alias "PathFileExistsA" (ByVal pszPath As String) As Long
'知識點一:Path,返回當前工作簿路徑
'測試代碼如下:
Sub getpath()
'定義mypath為字符串
Dim mypath As String
'把當前文件路徑賦予給mypath,注意thisworkbook.path的使用
mypath = ThisWorkbook.Path
'顯示路徑
MsgBox mypath
End Sub
'知識點二:利用當前路徑選擇性打開當前文件夾中某xlsx文件
Sub myfile()
'定義mypath為字符串
Dim mypath As String
' 指定路徑
mypath = ThisWorkbook.Path
'打開指定路徑的A工作簿
Workbooks.Open mypath & "\A.xlsx"
End Sub
'知識點三:返回當前文件夾的除了“文件操作”外其他所有xlsx文件名
Sub GetAllFileName()
'定義MyDir為字符串
Dim MyDir As String
'返回當前工作簿路徑的Excel文件名稱
MyDir = Dir(ThisWorkbook.Path & "\*.xlsx")
'把MyFile賦予A1
[A1] = "MyFile"
'******************************************
Do
'需要列出的文件名不包含當前的“文件操作”的Excel文件,使用Not...Like 來判斷
If Not MyDir Like "*文件操作*" Then
'如果不存在,則逐個填入當前文件夾中的Excel文件名稱
Cells(Cells(Rows.Count, 1).End(xlUp).Row + 1, 1) = MyDir
'退出If判斷
End If
'返回匹配路徑的第一個文件名稱
MyDir = Dir
'避免錯誤發生,設置循環終止條件為Len(MyDir)=0,即判斷文件名是否為空
Loop Until Len(MyDir) = 0
'******************************************
End Sub
'知識點四:批量刪除文件夾內所有類型文件
Sub 批量刪除文件()
'定義變量
Dim fso, fld, fd, F
'調用Scripting.FileSystemObject
Set fso = CreateObject("Scripting.FileSystemObject")
'返回一個和指定路徑中文件夾相對應的FSO文件夾對象
Set fld = fso.getfolder(ThisWorkbook.Path & "\")
'循環每個文件夾并刪除
For Each fd In fld.subfolders
fd.Delete
Next
'除了本工作簿文件外,循環其他每個文件并刪除
For Each F In fld.Files
If F.Name <> ThisWorkbook.Name Then F.Delete
Next
End Sub
'知識點五:判斷指定文件是否存在
Sub FileExist1()
'如果當前路徑下的B文件的文件名不為空,則存在,否則不存在
If Dir(ThisWorkbook.Path & "\B.xlsx") <> "" Then
MsgBox "B文件存在!"
Else
MsgBox "B文件不存在!"
End If
End Sub
'知識點六:判斷指定文件是否存在(API函數)
'*************API代碼判斷存在*******************************************************************
'Private Declare Function PathFileExists Lib "shlwapi.dll" Alias "PathFileExistsA" (ByVal pszPath As String) As Long
Sub FileExist2()
'調用了PathFileExists這個API函數判斷
If CBool(PathFileExists(ThisWorkbook.Path & "\B.xlsx")) Then
MsgBox "B文件存在!"
Else
MsgBox "B文件不存在!"
End If
End Sub
'PathFileExists 既可以判斷本地文件是否存在,又可以判斷遠程電腦上的文件是否存在。函數返回值是個Long型變量,返回兩個值0,1。1表示文件存在(True),0表示文件不存在(False)
'*************API代碼判斷存在*******************************************************************
'知識點七:判斷指定文件是否存在(Scripting.FileSystemObject法)
Sub FileExist3()
'定義變量fs
Dim fs
'調用Scripting.FileSystemObject
Set fs = CreateObject("Scripting.FileSystemObject")
'利用FileExists功能判斷
If fs.FileExists(ThisWorkbook.Path & "\B.xlsx") = True Then
MsgBox "B文件存在!"
Else
MsgBox "B文件不存在!"
End If
End Sub
'知識點八:列出指定路徑所有子文件夾名稱
Sub GetAllFolderlist()
'定義變量fs、fld、fd
Dim fs, fld, fd
'定義i為長整型
Dim i As Long
'初始化i變量
i = 0
'調用Scripting.FileSystemObject
Set fs = CreateObject("Scripting.filesystemobject")
'返回一個和指定路徑中文件夾相對應的FSO文件夾對象
Set fld = fs.getfolder(ThisWorkbook.Path & "\")
'循環每個文件夾
For Each fd In fld.subfolders
'把文件夾名稱賦予B列
Cells(i + 1, 2) = fd.Name
'使用累加器
i = i + 1
Next
End Sub
'知識點九:獲取文件夾大小
Sub GetF()
'定義變量fs、fld、fd
Dim fs, fld, fd
'定義i為長整型
Dim i As Long
'初始化i變量
i = 0
'調用Scripting.FileSystemObject
Set fs = CreateObject("Scripting.filesystemobject")
'返回一個和指定路徑中文件夾相對應的FSO文件夾對象
Set fld = fs.getfolder(ThisWorkbook.Path & "\")
'循環每個文件夾
For Each fd In fld.subfolders
'把文件夾名稱賦予B列
Cells(i + 1, 2) = fd.Name
'關鍵是fd.size/1024的運算
Cells(i + 1, 3) = FormatNumber(fd.Size / 1024, 0) & "KB"
'使用累加器
i = i + 1
Next
End Sub
'知識點十:復制文件夾
Sub Copyfile()
'定義變量fso,fs
Dim fso, fs
'調用Scripting.FileSystemObject
Set fso = CreateObject("Scripting.FileSystemObject")
'取得需要復制的文件夾對象
Set fs = fso.getfolder(ThisWorkbook.Path & "\SQL高級")
'使用copy方法復制到SQL初級文件夾中
fs.Copy (ThisWorkbook.Path & "\SQL初級\")
'顯示成功復制
MsgBox "OK!"
End Sub