設為首頁收藏本站Access中國

Office中國論壇/Access中國論壇

 找回密碼
 注冊

QQ登錄

只需一步,快速開始

返回列表 發(fā)新帖
查看: 2072|回復: 5
打印 上一主題 下一主題

[Access本身] 關于創(chuàng)建文件夾的問題請教

[復制鏈接]
跳轉到指定樓層
1#
發(fā)表于 2020-7-17 21:44:36 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
各位前輩,現(xiàn)在我有一個問題,我D盤下有一個“項目”文件夾,Access窗體下有一個下拉列表框,分有不同的類別(建筑類、機電類、市政類、水利類),當我在新建一個項目的時候,會有一個項目號,我希望實現(xiàn),當我新建項目的時候,會在D盤“項目”目錄下,生成對應的類別文件夾,在對應的類別文件夾下生成以項目號命名的文件夾,同時有判斷文件夾是否存在的功能!已存在的文件夾不再創(chuàng)建!
舉例:
項目A,類別是AA
項目B,類別是BB
項目C,類別是CC
項目D,類別是BB
實現(xiàn)如下:
在D盤項目文件夾下生成如下
d:\項目\AA\A
d:\項目\BB\B
d:\項目\CC\C
d:\項目\BB\D

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 分享淘帖 訂閱訂閱
2#
 樓主| 發(fā)表于 2020-7-18 14:10:41 | 只看該作者
沉了
回復

使用道具 舉報

3#
發(fā)表于 2020-7-19 15:30:11 | 只看該作者
一般判斷文件夾是否存在,可以用fso(需要引用Microsoft scripting runtime庫),然后用folderExists方法來判斷即可。例如:
    Dim fso As New FileSystemObject
    fso.FolderExists("C:\windows")
至于創(chuàng)建,當然可以用CreateFolder方法了。同樣的,還有DeleteFolder方法。。對應的,還有操作文件夾的方法,例如,CreateFile……這些就不一一介紹了,請自行百度下。論壇上其實也有些例子,但一時間我找不出來。
4#
 樓主| 發(fā)表于 2020-7-19 21:25:49 | 只看該作者
roych 發(fā)表于 2020-7-19 15:30
一般判斷文件夾是否存在,可以用fso(需要引用Microsoft scripting runtime庫),然后用folderExists方法來 ...

我找到你曾經發(fā)這的這個
“由于CreateFolder是需要預先存在上一級的文件夾。給出的建議是:
1、使用循環(huán),split路徑,然后逐層創(chuàng)建文件夾。
或者
2、使用遞歸,一直Call函數(shù),直至返回到磁盤驅動器的位置。
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
        '如果不存在則創(chuàng)建文件夾
        If Len(Dir(strPath)) = 0 Then
            fso.CreateFolder strPath
        End If
    End If
End Sub

'調用
Sub test()

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

End Sub
復制代碼
不過個人覺得都太復雜。此外,調用時由于已經創(chuàng)建了文件夾,因此接下來只需要復制文件【CopyFile】即可。

最好的辦法是使用FileDialog的FolderPicker,選擇一個路徑后,然后使用FileSystemObject的CopyFolder方法(如果有子文件,可能還需要使用CopyFile)!
但這個只是第一層的,第二層的我真搞不懂關系!還請指點一二
5#
發(fā)表于 2020-7-20 14:18:43 | 只看該作者
itso 發(fā)表于 2020-7-19 21:25
我找到你曾經發(fā)這的這個
“由于CreateFolder是需要預先存在上一級的文件夾。給出的建議是:
1、使用循 ...

根據題意,你需要的創(chuàng)建文件夾,可以試試用API,因為你沒有提供實例樣本,所以請自行測試。

1、公共模塊中:
  1. '可以實現(xiàn)創(chuàng)建多級目錄
  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
復制代碼

6#
 樓主| 發(fā)表于 2020-7-20 14:26:06 | 只看該作者
ly 發(fā)表于 2020-7-20 14:18
根據題意,你需要的創(chuàng)建文件夾,可以試試用API,因為你沒有提供實例樣本,所以請自行測試。

1、公共模 ...

謝謝你,我也找到了這個API的方法并實現(xiàn)了!~
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則

QQ|站長郵箱|小黑屋|手機版|Office中國/Access中國 ( 粵ICP備10043721號-1 )  

GMT+8, 2024-10-23 10:32 , Processed in 0.107342 second(s), 29 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回復 返回頂部 返回列表