Create a folder and sub folder in Excel VBA

后端 未结 13 1451
梦谈多话
梦谈多话 2020-11-28 05:43

I have a pull down menu of companies that is populated by a list on another sheet. Three columns, Company, Job #, and Part Number.

When a job is created I need a fo

相关标签:
13条回答
  • 2020-11-28 06:02

    This works like a charm in AutoCad VBA and I grabbed it from an excel forum. I don't know why you all make it so complicated?

    FREQUENTLY ASKED QUESTIONS

    Question: I'm not sure if a particular directory exists already. If it doesn't exist, I'd like to create it using VBA code. How can I do this?

    Answer: You can test to see if a directory exists using the VBA code below:

    (Quotes below are omitted to avoid confusion of programming code)


    If Len(Dir("c:\TOTN\Excel\Examples", vbDirectory)) = 0 Then
    
       MkDir "c:\TOTN\Excel\Examples"
    
    End If
    

    http://www.techonthenet.com/excel/formulas/mkdir.php

    0 讨论(0)
  • 2020-11-28 06:03

    Another simple version working on PC:

    Sub CreateDir(strPath As String)
        Dim elm As Variant
        Dim strCheckPath As String
    
        strCheckPath = ""
        For Each elm In Split(strPath, "\")
            strCheckPath = strCheckPath & elm & "\"
            If Len(Dir(strCheckPath, vbDirectory)) = 0 Then MkDir strCheckPath
        Next
    End Sub
    
    0 讨论(0)
  • 2020-11-28 06:03

    I found a much better way of doing the same, less code, much more efficient. Note that the """" is to quote the path in case it contains blanks in a folder name. Command line mkdir creates any intermediary folder if necessary to make the whole path exist.

    If Dir(YourPath, vbDirectory) = "" Then
        Shell ("cmd /c mkdir """ & YourPath & """")
    End If
    
    0 讨论(0)
  • 2020-11-28 06:03
    Sub MakeAllPath(ByVal PS$)
        Dim PP$
        If PS <> "" Then
            ' chop any end  name
            PP = Left(PS, InStrRev(PS, "\") - 1)
            ' if not there so build it
            If Dir(PP, vbDirectory) = "" Then
                MakeAllPath Left(PP, InStrRev(PS, "\") - 1)
                ' if not back to drive then  build on what is there
                If Right(PP, 1) <> ":" Then MkDir PP
            End If
        End If
    End Sub
    
    
    'Martins loop version above is better than MY recursive version
    'so improve to below
    
    Sub MakeAllDir(PathS$)            
    
      ' format "K:\firstfold\secf\fold3"
    
      If Dir(PathS) = vbNullString Then     
    
     ' else do not bother
    
       Dim LI&, MYPath$, BuildPath$, PathStrArray$()
    
       PathStrArray = Split(PathS, "\")
    
          BuildPath = PathStrArray(0) & "\"    '
    
          If Dir(BuildPath) = vbNullString Then 
    
    ' trap problem of no drive :\  path given
    
             If vbYes = MsgBox(PathStrArray(0) & "< not there for >" & PathS & " try to append to " & CurDir, vbYesNo) Then
                BuildPath = CurDir & "\"
             Else
                Exit Sub
             End If
          End If
          '
          ' loop through required folders
          '
          For LI = 1 To UBound(PathStrArray)
             BuildPath = BuildPath & PathStrArray(LI) & "\"
             If Dir(BuildPath, vbDirectory) = vbNullString Then MkDir BuildPath
          Next LI
       End If 
    
     ' was already there
    
    End Sub
    
    ' use like
    'MakeAllDir "K:\bil\joan\Johno"
    
    'MakeAllDir "K:\bil\joan\Fredso"
    
    'MakeAllDir "K:\bil\tom\wattom"
    
    'MakeAllDir "K:\bil\herb\watherb"
    
    'MakeAllDir "K:\bil\herb\Jim"
    
    'MakeAllDir "bil\joan\wat" ' default drive
    
    0 讨论(0)
  • 2020-11-28 06:08
    Function MkDir(ByVal strDir As String)
        Dim fso: Set fso = CreateObject("Scripting.FileSystemObject")
        If Not fso.FolderExists(strDir) Then
            ' create parent folder if not exist (recursive)
            MkDir (fso.GetParentFolderName(strDir))
            ' doesn't exist, so create the folder
            fso.CreateFolder strDir
        End If
    End Function
    
    0 讨论(0)
  • 2020-11-28 06:09
    Private Sub CommandButton1_Click()
        Dim fso As Object
        Dim fldrname As String
        Dim fldrpath As String
    
        Set fso = CreateObject("scripting.filesystemobject")
        fldrname = Format(Now(), "dd-mm-yyyy")
        fldrpath = "C:\Temp\" & fldrname
        If Not fso.FolderExists(fldrpath) Then
            fso.createfolder (fldrpath)
        End If
    End Sub
    
    0 讨论(0)
提交回复
热议问题