楼主 wise |
Excel VBA操作文件技巧汇总(一)
本文收集了Excel中最简单操作文件的技巧,每个语句均有说明。
'知识点一: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
VBA操作文件集合.rar |
2楼 wise |
'知识点三:返回当前文件夹的除了“文件操作”外其他所有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
|
3楼 wise |
'知识点四:批量删除文件夹内所有类型文件
- 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
|
4楼 wise |
'知识点五:判断指定文件是否存在
- Sub FileExist1()
- '如果当前路径下的B文件的文件名不为空,则存在,否则不存在
- If Dir(ThisWorkbook.Path & "\B.xlsx") <> "" Then
- MsgBox "B文件存在!"
- Else
- MsgBox "B文件不存在!"
- End If
- End Sub
|
5楼 wise |
'知识点六:判断指定文件是否存在(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代码判断存在******************************************************************* |
6楼 wise |
'知识点七:判断指定文件是否存在(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
|
7楼 wise |
'知识点八:列出指定路径所有子文件夹名称
- 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
|
8楼 wise |
'知识点九:获取文件夹大小
- 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
|
9楼 wise |
'知识点十:复制文件夹
- 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
|
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,返回当前工作簿路径 '测试代码如下:- 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
VBA操作文件集合.rar |
22楼 wise |
'知识点三:返回当前文件夹的除了“文件操作”外其他所有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
|
23楼 wise |
'知识点四:批量删除文件夹内所有类型文件
- 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
|
24楼 wise |
'知识点五:判断指定文件是否存在
- Sub FileExist1()
- '如果当前路径下的B文件的文件名不为空,则存在,否则不存在
- If Dir(ThisWorkbook.Path & "\B.xlsx") <> "" Then
- MsgBox "B文件存在!"
- Else
- MsgBox "B文件不存在!"
- End If
- End Sub
|
25楼 wise |
'知识点六:判断指定文件是否存在(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代码判断存在******************************************************************* |
26楼 wise |
'知识点七:判断指定文件是否存在(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
|
27楼 wise |
'知识点八:列出指定路径所有子文件夹名称
- 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
|
28楼 wise |
'知识点九:获取文件夹大小
- 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
|
29楼 wise |
'知识点十:复制文件夹
- 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
|
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 |
赞一个 |