当前位置:文档之家› VBA文件及文件夹操作

VBA文件及文件夹操作

VBA文件及文件夹操作1.VBA操作文件及文件夹on error resume next下测试A,在D:\下新建文件夹,命名为folder方法1:MkDir "D:\folder"方法2:Set abc = CreateObject("Scripting.FileSystemObject")abc.CreateFolder ("D:\folder")B,新建2个文件命名为a.xls和b.xlsWorkbooks.AddActiveWorkbook.SaveAs Filename:="D:\folder\a.xls"ActiveWorkbook.SaveAs Filename:="D:\folder\b.xls"C,创建新文件夹folder1并把a.xls复制到新文件夹重新命名为c.xls MkDir "D:\folder1"FileCopy "D:\folder\a.xls", "D:\folder1\c.xls"D,复制folder中所有文件到folder1Set qqq = CreateObject("Scripting.FileSystemObject")qqq.CopyFolder "D:\folder", "D:\folder1"D,重命名a.xls为d.xlsname "d:\folder1\a.xls" as "d:\folder1\d.xls"E,判断文件及文件夹是否存在Set yyy = CreateObject("Scripting.FileSystemObject")If yyy.FolderExists("D:\folder1) = True Then ...If yyy.FileExists("D:\folder1\d.xls) = True Then ...F,打开folder1中所有文件Set rrr = CreateObject("Scripting.FileSystemObject")Set r = rrr.GetFolder("d:\folder1")For Each i In r.FilesWorkbooks.Open Filename:=("d:\folder1\" + + "")NextG,删除文件c.xlskill "d:\folder1\c.xls"H,删除文件夹folderSet aaa = CreateObject("Scripting.FileSystemObject")aaa.DeleteFolder "d:\folder"2.VBA Dir函数第1.12例Dir函数一、题目:要求编写一段代码,运用Dir函数返回一个文件夹的文件列表。

二、代码:Sub 示例_1_12()Dim wjmwjm = Dir("C:\WINDOWS\WIN.ini")MsgBox wjmwjm = Dir("C:\WINDOWS\*.ini")wjm = DirEnd Sub三、代码详解1、Sub 示例_1_12():宏程序的开始语句。

宏名为示例_1_12。

2、Dim wjm :变量wjm声明为可变型数据类型。

3、wjm = Dir("C:\WINDOWS\WIN.ini") :如果该文件存在则返回“WIN.INI”(在C:\Windows 文件夹中) ,把返回的文件名赋给变量wjm 。

如果该文件不存在则wjm=””。

4、wjm = Dir("C:\WINDOWS\*.ini") :返回带指定扩展名的文件名。

如果超过一个*.ini 文件存在,函数将返回按条件第一个找到的文件名。

5、wjm = Dir :若第二次调用Dir 函数,但不带任何参数,则函数将返回同一目录下的下一个*.ini 文件。

Dir函数返回一个字符串String,用以表示一个文件名、目录名或文件夹名称,它必须与指定的模式或文件属性、或磁盘卷标相匹配。

Dir[(pathname[, attributes])]Dir 函数的语法具有以下几个部分:pathname 可选参数。

用来指定文件名的字符串表达式,可能包含目录或文件夹、以及驱动器。

如果没有找到pathname,则会返回零长度字符串("")。

attributes 可选参数。

常数或数值表达式,其总和用来指定文件属性。

如果省略,则会返回匹配pathname 但不包含属性的文件。

EXCEL的VBA用于同时显示目录文件夹和文件列表2010-05-22 18:41”VBA工具中要引用microsoft scipting runtimeDim pt As RangeSub 查找文件夹下子文件夹及其大小()Dim theDir As StringSet pt = ActiveSheet.Range("a1")pt.Worksheet.Columns(1).ClearContents '清除第一列theDir = Application.InputBox ("输入指定文件夹的路径:", "查看子文件夹及其大小")pt = theDir ‘列出选取的目录名listPath theDir ’用于列出子目录和文件pt.Worksheet.Columns("a:b").AutoFitEnd SubSub listPath(strDir As String)Dim thePath As StringDim strSdir As StringDim theDirs As Scripting.FoldersDim theDir As Scripting.FolderDim row As IntegerDim s As StringDim myFso As Scripting.FileSystemObjectSet myFso = New Scripting.FileSystemObjectIf Right(strDir, 1) <> "\" Then strDir = strDir & "\"thePath = thePath & strDirrow = pt.row '此段为获取此目录下的文件名s = Dir(thePath, 7) '获取第一个文件Do While s <> ""row = row + 1Cells(row, 1) = s '文件的名称Cells(row, 1).Font.Color = RGB(256, 12, 213)Cells(row, 1).Font.Bold = Tures = Dir ‘下一个文件LoopSet pt = Cells(row, 1)Set pt = pt.Offset(1, 0)Set theDirs = myFso.getfolder(strDir).subfoldersFor Each theDir In theDirspt = theDir.Pathpt.Next = theDir.SizelistPath theDir.PathNextSet myFso = NothingEnd SubPrivate Sub CommandButton1_Click()查找文件夹下子文件夹及其大小End Sub3.用VBA获取文件夹中的文件列表如果我们要在Excel中获取某个文件夹中所有的文件列表,可以通过下面的VBA代码来进行。

代码运行后,首先弹出一个浏览文件夹对话框,然后新建一个工作簿,并在工作表的A至F列分别列出选定文件夹中的所有文件的文件名、文件大小、创建时间、修改时间、访问时间及完整路径。

方法如下:1.按Alt+F11,打开VBA编辑器,单击菜单“插入→模块”,将下面的代码粘贴到右侧的代码窗口中:Option ExplicitSub GetFileList()Dim strFolder As StringDim varFileList As V ariantDim FSO As Object, myFile As ObjectDim myResults As V ariantDim l As Long'显示打开文件夹对话框With Application.FileDialog(msoFileDialogFolderPicker) .ShowIf .SelectedItems.Count = 0 Then Exit Sub '未选择文件夹strFolder = .SelectedItems(1)End With'获取文件夹中的所有文件列表varFileList = fcnGetFileList(strFolder)If Not IsArray(varFileList) ThenMsgBox "未找到文件", vbInformationExit SubEnd If'获取文件的详细信息,并放到数组中ReDim myResults(0 To UBound(varFileList) + 1, 0 To 5) myResults(0, 0) = "文件名"myResults(0, 1) = "大小(字节)"myResults(0, 2) = "创建时间"myResults(0, 3) = "修改时间"myResults(0, 4) = "访问时间"myResults(0, 5) = "完整路径"Set FSO = CreateObject("Scripting.FileSystemObject")For l = 0 To UBound(varFileList)Set myFile = FSO.GetFile(CStr(varFileList(l)))myResults(l + 1, 0) = CStr(varFileList(l))myResults(l + 1, 1) = myFile.SizemyResults(l + 1, 2) = myFile.DateCreatedmyResults(l + 1, 3) = myFile.DateLastModifiedmyResults(l + 1, 4) = myFile.DateLastAccessedmyResults(l + 1, 5) = myFile.PathNext lfcnDumpToWorksheet myResultsSet myFile = NothingSet FSO = NothingEnd SubPrivate Function fcnGetFileList(ByVal strPath As String, Optional strFilter As String) As Variant' 如果文件夹中包含文件返回一个二维数组,否则返回FalseDim f As StringDim i As IntegerDim FileList() As StringIf strFilter = "" Then strFilter = "*.*"Select Case Right$(strPath, 1)Case "\", "/"strPath = Left$(strPath, Len(strPath) - 1)End SelectReDim Preserve FileList(0)f = Dir$(strPath & "\" & strFilter)Do While Len(f) > 0ReDim Preserve FileList(i) As StringFileList(i) = fi = i + 1f = Dir$()LoopIf FileList(0) <> Empty ThenfcnGetFileList = FileListElsefcnGetFileList = FalseEnd IfEnd FunctionPrivate Sub fcnDumpToWorksheet(varData As Variant, Optional mySh As Worksheet)Dim iSheetsInNew As IntegerDim sh As Worksheet, wb As WorkbookDim myColumnHeaders() As StringDim l As Long, NoOfRows As LongIf mySh Is Nothing Then'新建一个工作簿iSheetsInNew = Application.SheetsInNewWorkbookApplication.SheetsInNewWorkbook = 1Set wb = Application.Workbooks.AddApplication.SheetsInNewWorkbook = iSheetsInNewSet sh = wb.Sheets(1)ElseSet mySh = shEnd IfWith shRange(.Cells(1, 1), .Cells(UBound(varData, 1) + 1, UBound(varData, 2) + 1)) = varData.UsedRange.Columns.AutoFitEnd WithSet sh = NothingSet wb = NothingEnd Sub2.关闭VBA编辑器,回到Excel工作表中,按Alt+F8,打开“宏”对话框,选择“GetFileList”,单击“运行”按钮。

相关主题