ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E文精选 > Excel VBA > Excel VBA操作文件技巧汇总(一)

Excel VBA操作文件技巧汇总(一)

作者:绿色风 分类: 时间:2022-08-17 浏览:213
楼主
wise
Excel VBA操作文件技巧汇总(一)

本文收集了Excel中最简单操作文件的技巧,每个语句均有说明。

'知识点一:Path,返回当前工作簿路径
'测试代码如下:
  1. Sub getpath()
  2. '定义mypath为字符串
  3.    Dim mypath As String
  4. '把当前文件路径赋予给mypath,注意thisworkbook.path的使用
  5.    mypath = ThisWorkbook.Path
  6. '显示路径
  7.    MsgBox mypath
  8. End Sub
'知识点二:利用当前路径选择性打开当前文件夹中某xlsx文件
  1. Sub myfile()
  2. '定义mypath为字符串
  3. Dim mypath As String
  4. ' 指定路径
  5. mypath = ThisWorkbook.Path
  6. '打开指定路径的A工作簿
  7. Workbooks.Open mypath & "\A.xlsx"
  8. End Sub




VBA操作文件集合.rar
2楼
wise
'知识点三:返回当前文件夹的除了“文件操作”外其他所有xlsx文件名
  1. Sub GetAllFileName()
  2. '定义MyDir为字符串
  3. Dim MyDir As String
  4. '返回当前工作簿路径的Excel文件名称
  5. MyDir = Dir(ThisWorkbook.Path & "\*.xlsx")
  6. '把MyFile赋予A1
  7. [A1] = "MyFile"
  8. '******************************************
  9. Do
  10.   '需要列出的文件名不包含当前的“文件操作”的Excel文件,使用Not...Like 来判断
  11.   If Not MyDir Like "*文件操作*" Then
  12.     '如果不存在,则逐个填入当前文件夹中的Excel文件名称
  13.     Cells(Cells(Rows.Count, 1).End(xlUp).Row + 1, 1) = MyDir
  14.     '退出If判断
  15.   End If
  16.   '返回匹配路径的第一个文件名称
  17.   MyDir = Dir
  18.   '避免错误发生,设置循环终止条件为Len(MyDir)=0,即判断文件名是否为空
  19. Loop Until Len(MyDir) = 0
  20. '******************************************
  21. End Sub
3楼
wise
'知识点四:批量删除文件夹内所有类型文件
  1. Sub 批量删除文件()
  2. '定义变量
  3.     Dim fso, fld, fd, F
  4. '调用Scripting.FileSystemObject
  5.     Set fso = CreateObject("Scripting.FileSystemObject")
  6. '返回一个和指定路径中文件夹相对应的FSO文件夹对象
  7.     Set fld = fso.getfolder(ThisWorkbook.Path & "\")
  8. '循环每个文件夹并删除
  9.     For Each fd In fld.subfolders
  10.         fd.Delete
  11.     Next
  12. '除了本工作簿文件外,循环其他每个文件并删除
  13.     For Each F In fld.Files
  14.         If F.Name <> ThisWorkbook.Name Then F.Delete
  15.     Next
  16. End Sub
4楼
wise
'知识点五:判断指定文件是否存在
  1. Sub FileExist1()
  2. '如果当前路径下的B文件的文件名不为空,则存在,否则不存在
  3. If Dir(ThisWorkbook.Path & "\B.xlsx") <> "" Then
  4.     MsgBox "B文件存在!"
  5. Else
  6.     MsgBox "B文件不存在!"
  7. End If
  8. End Sub
5楼
wise
'知识点六:判断指定文件是否存在(API函数)
'*************API代码判断存在*******************************************************************
  1. Private Declare Function PathFileExists Lib "shlwapi.dll" Alias "PathFileExistsA" (ByVal pszPath As String) As Long
  2. Sub FileExist2()
  3. '调用了PathFileExists这个API函数判断
  4. If CBool(PathFileExists(ThisWorkbook.Path & "\B.xlsx")) Then
  5.      MsgBox "B文件存在!"
  6. Else
  7.     MsgBox "B文件不存在!"
  8. End If
  9. End Sub
'PathFileExists 既可以判断本地文件是否存在,又可以判断远程电脑上的文件是否存在。函数返回值是个Long型变量,返回两个值0,1。1表示文件存在(True),0表示文件不存在(False)
'*************API代码判断存在*******************************************************************
6楼
wise
'知识点七:判断指定文件是否存在(Scripting.FileSystemObject法)

  1. Sub FileExist3()
  2.    '定义变量fs
  3.     Dim fs
  4.     '调用Scripting.FileSystemObject
  5.     Set fs = CreateObject("Scripting.FileSystemObject")
  6.     '利用FileExists功能判断
  7.     If fs.FileExists(ThisWorkbook.Path & "\B.xlsx") = True Then
  8.      MsgBox "B文件存在!"
  9.     Else
  10.      MsgBox "B文件不存在!"
  11.     End If
  12. End Sub
7楼
wise
'知识点八:列出指定路径所有子文件夹名称

  1. Sub GetAllFolderlist()
  2. '定义变量fs、fld、fd
  3. Dim fs, fld, fd
  4. '定义i为长整型
  5. Dim i As Long
  6. '初始化i变量
  7. i = 0
  8. '调用Scripting.FileSystemObject
  9. Set fs = CreateObject("Scripting.filesystemobject")
  10. '返回一个和指定路径中文件夹相对应的FSO文件夹对象
  11. Set fld = fs.getfolder(ThisWorkbook.Path & "\")
  12. '循环每个文件夹
  13.     For Each fd In fld.subfolders
  14.     '把文件夹名称赋予B列
  15.         Cells(i + 1, 2) = fd.Name
  16.         '使用累加器
  17.         i = i + 1
  18.     Next
  19. End Sub
8楼
wise
'知识点九:获取文件夹大小

  1. Sub GetF()
  2. '定义变量fs、fld、fd
  3. Dim fs, fld, fd
  4. '定义i为长整型
  5. Dim i As Long
  6. '初始化i变量
  7. i = 0
  8. '调用Scripting.FileSystemObject
  9. Set fs = CreateObject("Scripting.filesystemobject")
  10. '返回一个和指定路径中文件夹相对应的FSO文件夹对象
  11. Set fld = fs.getfolder(ThisWorkbook.Path & "\")
  12. '循环每个文件夹
  13.     For Each fd In fld.subfolders
  14.     '把文件夹名称赋予B列
  15.         Cells(i + 1, 2) = fd.Name
  16.         '关键是fd.size/1024的运算
  17.         Cells(i + 1, 3) = FormatNumber(fd.Size / 1024, 0) & "KB"
  18.         '使用累加器
  19.         i = i + 1
  20.     Next
  21. End Sub
9楼
wise
'知识点十:复制文件夹
  1. Sub Copyfile()
  2. '定义变量fso,fs
  3. Dim fso, fs
  4. '调用Scripting.FileSystemObject
  5. Set fso = CreateObject("Scripting.FileSystemObject")
  6. '取得需要复制的文件夹对象
  7. Set fs = fso.getfolder(ThisWorkbook.Path & "\SQL高级")
  8. '使用copy方法复制到SQL初级文件夹中
  9. fs.Copy (ThisWorkbook.Path & "\SQL初级\")
  10. '显示成功复制
  11. MsgBox "OK!"
  12. End Sub
10楼
donghan
哈,这么多好东西,收藏了
11楼
yncxxmj
真是学习vba知识的好东西。
12楼
wenfj
多谢分享,学习了
13楼
wz2796
哈,这么多好东西,收藏了^
14楼
wangqilong1980
收藏慢慢学习。越学习,越发现自已的无知!
15楼
bluexuemei
学习,谢谢分享!
16楼
xaweiyx
楼主辛苦了
17楼
rongjun
好东西学习下
18楼
renrg68
好,收藏了,认真学习。
19楼
qing33670000
分享感谢楼主分享,下载慢慢学习
20楼
jhzghua
哈,这么多好东西,收藏了
21楼
wise
Excel VBA操作文件技巧汇总(一)

本文收集了Excel中最简单操作文件的技巧,每个语句均有说明。

'知识点一:Path,返回当前工作簿路径
'测试代码如下:
  1. Sub getpath()
  2. '定义mypath为字符串
  3.    Dim mypath As String
  4. '把当前文件路径赋予给mypath,注意thisworkbook.path的使用
  5.    mypath = ThisWorkbook.Path
  6. '显示路径
  7.    MsgBox mypath
  8. End Sub
'知识点二:利用当前路径选择性打开当前文件夹中某xlsx文件
  1. Sub myfile()
  2. '定义mypath为字符串
  3. Dim mypath As String
  4. ' 指定路径
  5. mypath = ThisWorkbook.Path
  6. '打开指定路径的A工作簿
  7. Workbooks.Open mypath & "\A.xlsx"
  8. End Sub




VBA操作文件集合.rar
22楼
wise
'知识点三:返回当前文件夹的除了“文件操作”外其他所有xlsx文件名
  1. Sub GetAllFileName()
  2. '定义MyDir为字符串
  3. Dim MyDir As String
  4. '返回当前工作簿路径的Excel文件名称
  5. MyDir = Dir(ThisWorkbook.Path & "\*.xlsx")
  6. '把MyFile赋予A1
  7. [A1] = "MyFile"
  8. '******************************************
  9. Do
  10.   '需要列出的文件名不包含当前的“文件操作”的Excel文件,使用Not...Like 来判断
  11.   If Not MyDir Like "*文件操作*" Then
  12.     '如果不存在,则逐个填入当前文件夹中的Excel文件名称
  13.     Cells(Cells(Rows.Count, 1).End(xlUp).Row + 1, 1) = MyDir
  14.     '退出If判断
  15.   End If
  16.   '返回匹配路径的第一个文件名称
  17.   MyDir = Dir
  18.   '避免错误发生,设置循环终止条件为Len(MyDir)=0,即判断文件名是否为空
  19. Loop Until Len(MyDir) = 0
  20. '******************************************
  21. End Sub
23楼
wise
'知识点四:批量删除文件夹内所有类型文件
  1. Sub 批量删除文件()
  2. '定义变量
  3.     Dim fso, fld, fd, F
  4. '调用Scripting.FileSystemObject
  5.     Set fso = CreateObject("Scripting.FileSystemObject")
  6. '返回一个和指定路径中文件夹相对应的FSO文件夹对象
  7.     Set fld = fso.getfolder(ThisWorkbook.Path & "\")
  8. '循环每个文件夹并删除
  9.     For Each fd In fld.subfolders
  10.         fd.Delete
  11.     Next
  12. '除了本工作簿文件外,循环其他每个文件并删除
  13.     For Each F In fld.Files
  14.         If F.Name <> ThisWorkbook.Name Then F.Delete
  15.     Next
  16. End Sub
24楼
wise
'知识点五:判断指定文件是否存在
  1. Sub FileExist1()
  2. '如果当前路径下的B文件的文件名不为空,则存在,否则不存在
  3. If Dir(ThisWorkbook.Path & "\B.xlsx") <> "" Then
  4.     MsgBox "B文件存在!"
  5. Else
  6.     MsgBox "B文件不存在!"
  7. End If
  8. End Sub
25楼
wise
'知识点六:判断指定文件是否存在(API函数)
'*************API代码判断存在*******************************************************************
  1. Private Declare Function PathFileExists Lib "shlwapi.dll" Alias "PathFileExistsA" (ByVal pszPath As String) As Long
  2. Sub FileExist2()
  3. '调用了PathFileExists这个API函数判断
  4. If CBool(PathFileExists(ThisWorkbook.Path & "\B.xlsx")) Then
  5.      MsgBox "B文件存在!"
  6. Else
  7.     MsgBox "B文件不存在!"
  8. End If
  9. End Sub
'PathFileExists 既可以判断本地文件是否存在,又可以判断远程电脑上的文件是否存在。函数返回值是个Long型变量,返回两个值0,1。1表示文件存在(True),0表示文件不存在(False)
'*************API代码判断存在*******************************************************************
26楼
wise
'知识点七:判断指定文件是否存在(Scripting.FileSystemObject法)

  1. Sub FileExist3()
  2.    '定义变量fs
  3.     Dim fs
  4.     '调用Scripting.FileSystemObject
  5.     Set fs = CreateObject("Scripting.FileSystemObject")
  6.     '利用FileExists功能判断
  7.     If fs.FileExists(ThisWorkbook.Path & "\B.xlsx") = True Then
  8.      MsgBox "B文件存在!"
  9.     Else
  10.      MsgBox "B文件不存在!"
  11.     End If
  12. End Sub
27楼
wise
'知识点八:列出指定路径所有子文件夹名称

  1. Sub GetAllFolderlist()
  2. '定义变量fs、fld、fd
  3. Dim fs, fld, fd
  4. '定义i为长整型
  5. Dim i As Long
  6. '初始化i变量
  7. i = 0
  8. '调用Scripting.FileSystemObject
  9. Set fs = CreateObject("Scripting.filesystemobject")
  10. '返回一个和指定路径中文件夹相对应的FSO文件夹对象
  11. Set fld = fs.getfolder(ThisWorkbook.Path & "\")
  12. '循环每个文件夹
  13.     For Each fd In fld.subfolders
  14.     '把文件夹名称赋予B列
  15.         Cells(i + 1, 2) = fd.Name
  16.         '使用累加器
  17.         i = i + 1
  18.     Next
  19. End Sub
28楼
wise
'知识点九:获取文件夹大小

  1. Sub GetF()
  2. '定义变量fs、fld、fd
  3. Dim fs, fld, fd
  4. '定义i为长整型
  5. Dim i As Long
  6. '初始化i变量
  7. i = 0
  8. '调用Scripting.FileSystemObject
  9. Set fs = CreateObject("Scripting.filesystemobject")
  10. '返回一个和指定路径中文件夹相对应的FSO文件夹对象
  11. Set fld = fs.getfolder(ThisWorkbook.Path & "\")
  12. '循环每个文件夹
  13.     For Each fd In fld.subfolders
  14.     '把文件夹名称赋予B列
  15.         Cells(i + 1, 2) = fd.Name
  16.         '关键是fd.size/1024的运算
  17.         Cells(i + 1, 3) = FormatNumber(fd.Size / 1024, 0) & "KB"
  18.         '使用累加器
  19.         i = i + 1
  20.     Next
  21. End Sub
29楼
wise
'知识点十:复制文件夹
  1. Sub Copyfile()
  2. '定义变量fso,fs
  3. Dim fso, fs
  4. '调用Scripting.FileSystemObject
  5. Set fso = CreateObject("Scripting.FileSystemObject")
  6. '取得需要复制的文件夹对象
  7. Set fs = fso.getfolder(ThisWorkbook.Path & "\SQL高级")
  8. '使用copy方法复制到SQL初级文件夹中
  9. fs.Copy (ThisWorkbook.Path & "\SQL初级\")
  10. '显示成功复制
  11. MsgBox "OK!"
  12. End Sub
30楼
donghan
哈,这么多好东西,收藏了
31楼
terence121
很实用的几个技巧。多谢楼主分享!
32楼
bluexuemei
好东西,学习!
33楼
风就飘过
先留个脚印
34楼
fzh2618182
下来学习一下,谢谢楼主
35楼
失乐园--
36楼
健康快乐123
好东西,收藏了,谢谢楼主
37楼
ruoyu
学习来了,谢谢分享
38楼
二戒
感谢楼主
39楼
hnfgcjh
先收藏,以后明白了再学习。
40楼
swbuing
学习学习
41楼
lrlxxqxa
good
42楼
老糊涂
学习了
43楼
keven
赞一个

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap