设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 1586|回复: 5

[Access本身] 关于创建文件夹的问题请教

[复制链接]
发表于 2020-7-17 21:44:36 | 显示全部楼层 |阅读模式
各位前辈,现在我有一个问题,我D盘下有一个“项目”文件夹,Access窗体下有一个下拉列表框,分有不同的类别(建筑类、机电类、市政类、水利类),当我在新建一个项目的时候,会有一个项目号,我希望实现,当我新建项目的时候,会在D盘“项目”目录下,生成对应的类别文件夹,在对应的类别文件夹下生成以项目号命名的文件夹,同时有判断文件夹是否存在的功能!已存在的文件夹不再创建!
举例:
项目A,类别是AA
项目B,类别是BB
项目C,类别是CC
项目D,类别是BB
实现如下:
在D盘项目文件夹下生成如下
d:\项目\AA\A
d:\项目\BB\B
d:\项目\CC\C
d:\项目\BB\D

 楼主| 发表于 2020-7-18 14:10:41 | 显示全部楼层
沉了
回复

使用道具 举报

发表于 2020-7-19 15:30:11 | 显示全部楼层
一般判断文件夹是否存在,可以用fso(需要引用Microsoft scripting runtime库),然后用folderExists方法来判断即可。例如:
    Dim fso As New FileSystemObject
    fso.FolderExists("C:\windows")
至于创建,当然可以用CreateFolder方法了。同样的,还有DeleteFolder方法。。对应的,还有操作文件夹的方法,例如,CreateFile……这些就不一一介绍了,请自行百度下。论坛上其实也有些例子,但一时间我找不出来。
 楼主| 发表于 2020-7-19 21:25:49 | 显示全部楼层
roych 发表于 2020-7-19 15:30
一般判断文件夹是否存在,可以用fso(需要引用Microsoft scripting runtime库),然后用folderExists方法来 ...

我找到你曾经发这的这个
“由于CreateFolder是需要预先存在上一级的文件夹。给出的建议是:
1、使用循环,split路径,然后逐层创建文件夹。
或者
2、使用递归,一直Call函数,直至返回到磁盘驱动器的位置。
Sub CreateFolders(ByVal strPath As String)
    Dim fso As New FileSystemObject
    If InStrRev(strPath, "") > 3 Then
        strPath = Left(strPath, InStrRev(strPath, "") - 1)
        '递归
        CreateFolders strPath
        '忽略错误
        On Error Resume Next
        '如果不存在则创建文件夹
        If Len(Dir(strPath)) = 0 Then
            fso.CreateFolder strPath
        End If
    End If
End Sub

'调用
Sub test()

    Call CreateFolders("C:\ff\ll")

End Sub
复制代码
不过个人觉得都太复杂。此外,调用时由于已经创建了文件夹,因此接下来只需要复制文件【CopyFile】即可。

最好的办法是使用FileDialog的FolderPicker,选择一个路径后,然后使用FileSystemObject的CopyFolder方法(如果有子文件,可能还需要使用CopyFile)。”
但这个只是第一层的,第二层的我真搞不懂关系!还请指点一二
发表于 2020-7-20 14:18:43 | 显示全部楼层
itso 发表于 2020-7-19 21:25
我找到你曾经发这的这个
“由于CreateFolder是需要预先存在上一级的文件夹。给出的建议是:
1、使用循 ...

根据题意,你需要的创建文件夹,可以试试用API,因为你没有提供实例样本,所以请自行测试。

1、公共模块中:
  1. '可以实现创建多级目录
  2. Public Declare Function MakeSureDirectoryPathExists Lib "imagehlp.dll" (ByVal DirPath As String) As Long
复制代码

2、窗体模块:
  1. Sub CreateFolder()
  2.     Dim fileStr As String
  3.     Dim str1 As String, str2 As String
  4.     str1 = Me.cboProjectNubmer '窗体上对应的项目号控件
  5.     str2 = Me.cobProjectTpye '窗体上对应的项目类型控件
  6.    
  7.     fileStr = "D:\项目" & "" & str1 & "" & str2 & ""
  8.     MakeSureDirectoryPathExists fileStr   '调用API模块
  9. End Sub
复制代码

 楼主| 发表于 2020-7-20 14:26:06 | 显示全部楼层
ly 发表于 2020-7-20 14:18
根据题意,你需要的创建文件夹,可以试试用API,因为你没有提供实例样本,所以请自行测试。

1、公共模 ...

谢谢你,我也找到了这个API的方法并实现了!~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-3-29 08:34 , Processed in 0.102879 second(s), 30 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表