2015-05-29 62 views
1

我需要爲我的電腦創建一堆文件夾,所以我決定將它轉爲編碼任務。我已經設法讓用戶鍵入他們想要文件夾進入的位置,以及其他文本框的每一行都是新文件夾的標題。在VB2010中創建子文件夾?

這是問題所在。理想情況下,我想將多個文件夾放入每個文件夾中,而無需再次運行程序。該文本框將看起來像這樣,並會導致文件夾1,2中的folderA和文件3,4中folderB;

FolderA

文件1

文件2

FolderB中

文件3

文件4

這裏是我到目前爲止已經完成的代碼。

Dim Address As String = TextBox1.Text 

    For i As Integer = 0 To RichTextBox1.Lines.Count - 1 
      My.Computer.FileSystem.CreateDirectory(Address + (RichTextBox1.Lines(i))) 
    Next 

你知道我必須添加到我的代碼,以便它包括子文件夾嗎? (我沒有學習了,這樣我很抱歉,如果答案是真的很明顯。)

+0

哪個應用程序在做這個? MS Access,MS Excel或Word? –

+0

就我個人而言,我使用'MKDir()'函數完整的路徑描述,它似乎很容易使用!你可以得到一個工作簿(Excel)的當前路徑,就像這個'ThisWorkBook.Path',然後用'&「子文件夾名稱加上你的子文件夾的名稱\」' 如果你可以顯示一點更清楚你的輸入是什麼樣的,我會做一個正確的答案來解釋如何在你的情況下使用它! ;) – R3uK

+0

MKDir肯定是要走的路。我在下面提供的代碼爲基本目錄vs ThisWorkbook.Path提供了更多的靈活性,我認爲代碼可以在任何應用程序的VBA中工作。 –

回答

0

@punintentional

下面的代碼會做你問什麼了。您必須確保您有一個對Microsoft Office對象庫的引用集。你可以通過工具>參考來找到合適的答案。我使用Microsoft Office 12 Object Library設計了下面的代碼。如果您使用的是Office 2010,我認爲該參考將用於Microsoft Office 14 Object Library。

Option Explicit 

Public Sub DirectorySelect() 
    Dim diaFileDialog As FileDialog 
    Dim blDirSelected As Boolean 
    Dim strBaseDirectory As String 
    Dim strA_Dir As String 
    Dim StrB_Dir As String 

' set up a MS Office file dialog box to select a folder/directory 
    Set diaFileDialog = Application.FileDialog(msoFileDialogFolderPicker) 

    With diaFileDialog 
     .AllowMultiSelect = False ' user may only select one base folder 
     .Title = "Select the base director" ' title of the dialog box 

     blDirSelected = .Show ' the .show method will return false if the user does not select a directory 


     If blDirSelected = True Then ' a directory was selected 

      strBaseDirectory = .SelectedItems(1) ' put the directory into a variable 
      strBaseDirectory = strBaseDirectory & "\" ' the returned directory needs a trailing backslash 

'   These steps will jump to the other sub procedure to make the desired folders 
      MakeNewDir _ 
       BaseDirectory:=strBaseDirectory, _ 
       AddDirectory:="FolderA" 

      strA_Dir = strBaseDirectory & "FolderA" & "\" 

      MakeNewDir _ 
       BaseDirectory:=strA_Dir, _ 
       AddDirectory:="Folder1" 
      MakeNewDir _ 
       BaseDirectory:=strA_Dir, _ 
       AddDirectory:="Folder2" 

      MakeNewDir _ 
       BaseDirectory:=strBaseDirectory, _ 
       AddDirectory:="FolderB" 

      StrB_Dir = strBaseDirectory & "FolderB" & "\" 

      MakeNewDir _ 
       BaseDirectory:=StrB_Dir, _ 
       AddDirectory:="Folder3" 
      MakeNewDir _ 
       BaseDirectory:=StrB_Dir, _ 
       AddDirectory:="Folder4" 

     End If 
    End With 


End Sub 

Public Sub MakeNewDir(ByVal BaseDirectory As String, ByVal AddDirectory As String) 
    If Dir(BaseDirectory, vbDirectory) = vbNullString Then 
     MkDir BaseDirectory 
    End If 
    If Right(BaseDirectory, 1) <> "\" Then 
     BaseDirectory = BaseDirectory & "\" 
    End If 
    MkDir BaseDirectory & AddDirectory 
End Sub 
+0

感謝您的回覆:D。我看過工具,但你可以看到(tinyurl.com/p8kdk8w)引用不存在。我正在使用Microsoft Visual Basic 2010 Express,難道它不在那裏? – punintentional

+0

@punintentional對不起,我從來沒有使用過VB 2010 Express,所以我忍不住。上面的代碼是用MS Excel Visual Basic編輯器編寫的。也許別人可以提供一些輸入,以便在VB 2010 Express中設置引用,或者如何延遲綁定到FileDialog –

相關問題