一般情况下,缺省文件夹应该是VB的安装目录。我们输入如下代码,就可以在VB的安装目录下创建一个名为dd的文件夹。
Private Sub Form_Load()
MkDir "dd"End SubChDir可以更改缺省文件夹,比如我们输入如下代码:
Private Sub Form_Load()
ChDir "d:\soft"
MkDir "dd"End Sub就可以在d:\soft下创建一个dd文件夹。但是如果代码是这样的:
Private Sub Form_Load()
ChDir Environ("TEMP")
MkDir "dd"End Sub却没有在Temp文件夹下创建dd文件夹。不知这是什么原因?请赐教。

解决方案 »

  1.   

    Environ("TEMP") 在 XP 里面是
    C:\Documents and Settings\Administrator\Local Settings\Temp
    不是
    C:\Windows\Temp
      

  2.   

    这个问题你断点debug一下就知道了,我在immediate窗口中看到的
    Environ("TEMP") 在xp系统下
    C:\DOCUME~1\yaqiz\LOCALS~1\Temp然后我继续运行Mkdir "dd"
    在然后我就在我的temp路径下找到了dd文件夹
    C:\Documents and Settings\yaqiz\Local Settings\Temp\dd
      

  3.   

    我知道Environ("TEMP")是C:\Documents and Settings\用户名\Local Settings\Temp,但
    Private Sub Form_Load() 
    ChDir Environ("TEMP") 
    MkDir "dd" End Sub 执行后C:\Documents and Settings\用户名\Local Settings\Temp里面没有dd文件夹。
      

  4.   

    ChDir不具备夸磁盘的功能,因此你要先设置盘符。类似如下的代码:Dim s As String
    ChDrive "c:"
    s = Environ("TEMP")
    ChDir s
      

  5.   

    把MSDN中的说明贴给你吧。可以在程序中使用 FSO 对象模型来处理驱动器和文件夹,如同在“Windows 资源管理器”中能进行的交互方式一样。您可以复制和移动文件夹,获得驱动器和文件夹的信息,等等。获得驱动器的信息
    Drive 对象允许获得一个系统的各个驱动器的信息,这些驱动器可以是物理的,也可以是位于网络上的。通过该对象的属性可以获得下列信息: 以字节表示的驱动器总空间 (TotalSize 属性)
    以字节表示的驱动器可用空间 (AvailableSpace 或 FreeSpace 属性)
    给驱动器指定的字母号 (DriveLetter 属性)
    驱动器类型,诸如可移动的、固定的、网络、CD-ROM、或者 RAM 盘 (DriveType 属性)
    驱动器序列号 (SerialNumber 属性)
    驱动器使用的文件系统类型,诸如 FAT、 FAT32、 NTFS等等 (FileSystem 属性)
    驱动器是否可用 (IsReady 属性)
    共享和/或卷标的名称 (ShareName 和 VolumeName 属性)
    驱动器的路径或根文件夹 (Path 和 RootFolder 属性) 
    Drive 对象用法示例
    下列示例说明了如何使用 Drive 对象来收集有关驱动器的信息。请记住,在下面的代码中并没有对一个实际 Drive 对象的引用;而是使用 GetDrive 方法来获得一个对已有 Drive 对象(本例中就是 drv)的引用:Private Sub Command3_Click()
       Dim fso As New FileSystemObject, drv As Drive, s As String
       Set drv = fso.GetDrive(fso.GetDriveName("c:"))
       s = "Drive " & UCase("c:") & " - "
       s = s & drv.VolumeName & vbCrLf
       s = s & "Total Space: " & FormatNumber(drv.TotalSize / 1024, 0)
       s = s & " Kb" & vbCrLf
       s = s & "Free Space: " & FormatNumber(drv.FreeSpace / 1024, 0)
       s = s & " Kb" & vbCrLf
       MsgBox s
    End Sub
    使用 CurDir、 ChDrive、 ChDir 或 App.Path
    如果使用 CurDir 函数、ChDrive 和ChDir 语句、或者 Path 属性 (App.Path),请注意,它们返回的有可能是一个 UNC 路径(即,形如 \\Server\Share而不是一个驱动器路径(如 E:\Folder),这取决于运行程序或工程的方式。在如下的情况,App.Path 返回一个 UNC 路径: 当运行一个从共享网络加载的工程时,即使该网络共享已经被映射到一个驱动器号。
    当从一个共享网络运行一个已编译的可执行文件时(但是仅当通过一个 UNC 路径运行该程序)。 
    ChDrive 不能处理 UNC 路径,因此当 App.Path 返回一个 UNC 路径给 ChDrive 时,就会产生一个错误。要避免这个错误,可以在 ChDrive 语句之前添加 On Error Resume Next,或者测试 App.Path 的头两个字符是否是反斜杠:On Error Resume Next
    ChDrive App.Path
    ChDir App.Path这个改动将处理所有使用 UNC 路径从 Windows 启动程序(例如,在“启动”菜单的“运行”对话框中)的情况,因为 Windows 将当前的目录设为一个 UNC 路径。ChDir 可以正确地处理 UNC 路径之间的转换。(ChDrive 的失效可以被忽略,因为 UNC 路径当中没有驱动器号)然而,如果在 MS-DOS 的命令行提示符后键入一个 UNC 路径来运行程序的话,上面的代码不会生效。这是因为命令行提示符用的总是当前目录的驱动器路径,所以 CurDir 被设为一个驱动器路径。ChDir 不会产生错误,但是它不能将一个目录从驱动器路径变为 UNC 路径。在这种情况下,唯一的解决办法是定位一个已经映射为 UNC 路径中指定共享的本地驱动器,或者使用网络命令来创建这样一个映射。如果工程是从一个网络共享—— UNC 路径或映射的驱动器路径——加载到 Visual Basic 集成开发环境(IDE)中的话,那么当运行工程时 App.Path 将返回一个 UNC 路径,而切ChDrive 失败并产生一个错误。ChDir 虽然不会出错,但目录并未改变。唯一的解决办法是通过手工来设置驱动器和目录:Const PROJECTSHARE = "E:\VBPROJ\MYPROJECT"
    #Const Debug = True
    #If Debug Then
        ChDrive PROJECTSHARE
        ChDir PROJECTSHARE
    #Else
        On Error Resume Next
        ChDrive App.Path
        ChDir App.Path
    #End If如果不止一个人可能在共享网络上打开该工程,那么可以使用一个 DOS 环境变量来允许每个人都拥有自己对该共享的映射:#Const Debug = True
    #If Debug Then
        ChDrive Environ("MYPROJECTDIR")
        ChDir Environ("MYPROJECTDIR")
    #Else
        On Error Resume Next
        ChDrive App.Path
        ChDir App.Path
    #End IfMYPROJECTDIR 的值指定了被映射的驱动器号和路径,例如: SET MYPROJECTDIR=M:\VBProj\MyProject
    使用文件夹
    下表显示了普通的文件夹任务以及完成这些任务的方法:任务 方法 
    创建一个文件夹 FileSystemObject.CreateFolder  
    删除一个文件夹 Folder.Delete 或
    FileSystemObject.DeleteFolder  
    移动一个文件夹 Folder.Move 或
    FileSystemObject.MoveFolder  
    复制一个文件夹 Folder.Copy 或
    FileSystemObject.CopyFolder  
    检索文件夹的名称 Folder.Name 
    查找一个文件夹是否在驱动器上 FileSystemObject.FolderExists  
    获得已有Folder对象的一个实例 FileSystemObject.GetFolder 
    找出一个文件夹的父文件夹的名称 FileSystemObject.GetParentFolderName  
    找出系统文件夹的路径 FileSystemObject.GetSpecialFolder  
    示例
    该示例演示如何使用 Folder 对象和 FileSystemObject 对象来操作文件夹并获得其信息:Private Sub Command10_Click()
       ' 获得 FileSystemObject 的实例。
       Dim fso As New FileSystemObject, fldr As Folder, s As String
       ' 获取 Drive 对象。
       Set fldr = fso.GetFolder("c:")
       ' 显示父文件夹名。
       Debug.Print "Parent folder name is: " & fldr
       ' 显示驱动器名。
       Debug.Print "Contained on drive " & fldr.Drive
       ' 显示根文件名。
       If fldr.IsRootFolder = True Then
          Debug.Print "This folder is a root folder."
       Else
          Debug.Print "This folder isn't a root folder."
       End If
       ' 用 FileSystemObject 对象创建一个新的文件夹。
       fso.CreateFolder ("c:\Bogus")
       Debug.Print "Created folder C:\Bogus"
       ' 显示文件夹的基本名称。
       Debug.Print "Basename = " & fso.GetBaseName("c:\bogus")
       ' 删除新建的文件夹。
       fso.DeleteFolder ("c:\Bogus")
       Debug.Print "Deleted folder C:\Bogus"
    End Sub
      

  6.   

    我用Administrator登录,XP系统,VB6.0下反复测试,在C:\Documents and Settings\Administrator\Local Settings\Temp下可以找到dd文件夹.
      

  7.   

    哎!!!
    可能你的VB是安装在D:盘的。
    建目录之前不但需要更换当前路径,还需要更新当前驱动器!
    不过不建议使用内置的这个函数了,不熟的话,不好使用。
    使用FSO吧,简单多了。
      

  8.   

    Private Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As LongPrivate Sub Command1_Click()
    Dim l As Long, t As String
    l = GetTempPath(0, t)
    Dim s As String * 32
    GetTempPath l, s
    MsgBox s
    End Sub 
      

  9.   

    我用windows2003,administrator,测试没有问题
    C:\Documents and Settings\Administrator\Local Settings\Temp\dd记住不同的用户C:\Documents and Settings\Administrator\Local Settings\Temp\dd红字部分是不一样的debug跟踪一下