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