向各位大神求解,VB中创建文件夹时:路径/文件访问错误
On Error GoTo ErrHandle
Dim FileName As String
FileName = App.Path & "\数据备份"
If Dir(FileName) = "" Then
MkDir App.Path & "\数据备份" <--为什么程序跑到这里就出错:路径/文件访问错误
End If
Exit Sub
ErrHandle:
MsgBox Error$, vbExclamation
对App.Path 有什么要求吗?能不能有中文字符? vb 中创 数据备份 string as
[解决办法]
推荐你采用FSO对象来创建和操作文件,比MKDir这样的DOS外部命令好用的多,参阅:
FSO 对象模型编程
FSO 对象模型编程包括三项主要任务:
使用CreateObject 方法,或将一个变量声明为 FileSystemObject 对象类型来创建一个 FileSystemObject 对象。
对新创建的对象使用适当的方法。
访问该对象的属性。
FSO 对象模型包含在一个称为 Scripting 的类型库中,此类型库位于 Scrrun.Dll 文件中。如果还没有引用此文件,请从“属性”菜单的“引用”对话框选择“Microsoft Scripting Runtime”项。然后就可以使用“对象浏览器”来查看其对象、集合、属性、方法、事件以及它的常数。
创建 FileSystemObject 对象
第一步是创建一个 FileSystemObject 对象以便进行处理。可以通过如下两种方法完成:
将一个变量声明为 FileSystemObject 对象类型:
Dim fso As New FileSystemObject
使用 CreateObject 方法来创建一个 FileSystemObject 对象:
Set fso = CreateObject("Scripting.FileSystemObject")
在上面的语法中, Scripting 是类型库的名称,而 FileSystemObject 则是想要创建一个实例的对象的名称。
注意 第一种方法只在 Visual Basic 中有效,而第二种方法在 Visual Basic 或 VBScript 中都是可行的。
使用适当的方法
下一步就是使用该 FileSystemObject 对象的适当的方法。例如,如果想要创建一个新对象,既可以使用 CreateFolder 方法也可以使用 CreateTextFile 方法。(FSO 对象模型不支持创建或删除驱动器。)
如果想要删除对象,可以使用 FileSystemObject 对象的 DeleteFile 和 DeleteFolder 方法,或者 File 和 Folder 对象的 Delete 方法。
使用适当的方法,还可以复制、移动文件和文件夹。
请注意, FileSystemObject 对象模型中有一些功能是冗余的。例如,要复制一个文件,既可以使用 FileSystemObject 对象的 CopyFile 方法,也可以使用 File 对象的 Copy 方法。这两者的功能是完全相同的。两者同时存在以提供最大的编程灵活性。
访问已有的驱动器、文件和文件夹
要访问一个已有的驱动器、文件或文件夹,请使用 FileSystemObject 对象中相应的 "get" 方法:
GetDrive
GetFolder
GetFile
例如:
Dim fso As New FileSystemObject, fil As File
Set fil = fso.GetFile("c:\test.txt")
但是,请注意,并不需要对新创建的对象使用"get" 方法,因为"create" 函数已经返回了一个句柄到新创建的对象。例如,如果使用 CreateFolder 方法创建了一个新的文件夹,就没有必要使用 GetFolder 方法来访问该对象的诸如名称、路径、大小等属性。只要给 CreateFolder 函数设置一个变量来获取新建文件夹的句柄,然后就可以访问其属性、方法和事件:
Private Sub Create_Folder()
Dim fso As New FileSystemObject, fldr As Folder
Set fldr = fso.CreateFolder("C:\MyTest")
MsgBox "Created folder: " & fldr.Name
End Sub
访问对象的属性
一旦有了对象的句柄,就能够访问其属性。例如,假定您想要获得一个特定文件夹的名称。首先要创建该对象的一个实例,然后通过适当的方法(在本例中是 GetFolder 方法,因为该文件夹已经存在)得到其句柄:
Set fldr = fso.GetFolder("c:")
现在有了一个 Folder 对象的句柄,您可以查看其 Name 属性:
Debug.Print "Folder name is: "; fldr.Name
如果想要找出一个文件的最新修改时间,可以使用如下的语法:
Dim fso As New FileSystemObject, fil As File
Set fil = fso.GetFile("c:\detlog.txt") ' 获得要查询的 File 对象。
Debug.Print "File last modified: "; fil.DateLastModified ' 显示信息。