No.1
VBA用于文件管理,并不是被大多数人熟知,通过Excel进行文件操作也是一件说难不难,说容易并不容易的事儿。
首先认识一个对象。
可以对文件进行复制、删除、移动、修改等等各种操作,并且可对提取文件的属性。
下图为对象的方法以及属性,要重点记住,对文件进行操作十分重要。
No.2
示例
对于文件操作,首先要对文件系统有一个初步了解,如果不清楚文件系统包含哪些内容,那么建议别学File对象,真的很难。
如果对Dos系统或Linux系统,熟练应用文件操作,那么学习File对象就十分简单了。
下图是围绕File对象做出了一个示例,包含了大多数方法应用和属性提取,如果完全掌握,那么就对文件对象操作有了一个很全面的认识。
左侧按钮分别执行不同的功能。
右侧表格是提取某个文件之后列出其文件信息,如创建日期目录地址等等属性。
下图为执行过程中选择文件对话框。
No.3
代码
如何创建File对象
Dim fs, f Set fs = CreateObject("scripting.FileSystemObject") Set f = fs.GetFile(FileName)
定义两个变量,分别给变量赋值。
变量fs为定义的FileSystemObject对象提供对计算机文件系统的访问权限,变量f返回一个Files对象。
其中FileSystemObject是一个重要的文件系统管理对象,也可以实现对文件的操作,但是其方法实在太多,本节不做介绍。
重点看一下其下的GetFile方法,此方法将返回一个File对象,也就是本节的主要内容。
变量f就是要进行各类文件操作的File对象。
函数:返回一个File对象
Public Function GetFileObject() As Object '取文件返回File对象 Dim FileName As String With Application.FileDialog(msoFileDialogFilePicker) If .Show = -1 Then .Filters.Clear .Filters.Add "文本文件", "*.txt" .Title = "选择文件" FileName = .SelectedItems(1) Else Set GetFileObject = Nothing Exit Function End If End With Dim fs Set fs = CreateObject("scripting.FileSystemObject") Set GetFileObject = fs.GetFile(FileName) Set fs = NothingEnd Function
上述函数将返回一个File对象,代码执行后将打开一个文件选择器,选择一个文本文件后返回被选文件对象,如果不选择文件就返回一个空对象。
提取文件信息
Private Sub GetFileinfo() '提取文件信息 Set f = GetFileObject'调用提取File对象函数 If f Is Nothing Then GoTo Ex100'如果对象是Nothing退出 Dim sh As Worksheet, cell As Range, xcell As Range Set sh = ActiveSheet Set cell = sh.Range("C4:C15") Dim infoArr(0 To 11), i As Integer For i = 0 To cell.Rows.Count Select Case i Case 0 infoArr(0) = f.Attributes'文件属性 Case 1 infoArr(1) = f.datecreated'创建日期 Case 2 infoArr(2) = f.datelastaccessed Case 3 infoArr(3) = f.datelastmodified Case 4 infoArr(4) = f.drive'驱动器 Case 5 infoArr(5) = f.Name'文件名 Case 6 infoArr(6) = f.parentFolder Case 7 infoArr(7) = f.Path'文件路径 Case 8 infoArr(8) = f.shortname Case 9 infoArr(9) = f.shortpath Case 10 infoArr(10) = f.Size'文件大小 Case 11 infoArr(11) = f.Type'文件类型 End Select Next iSet cell = cell.Item(1).Offset(0, 2).Resize(cell.Rows.Count, 1) cell = Application.WorksheetFunction.Transpose(infoArr)Ex100: Set f = NothingEnd Sub
完全理解并学会上面的代码,就对文件操作有一个基本认识了,在实践过程中继续学习,很快就会熟悉操作计算机内的文件信息。
制作一个文件管理系统就可以大显身手了。