[AccessD] Make Folder Problem

MartyConnelly martyconnelly at shaw.ca
Fri Apr 28 14:33:24 CDT 2006


 "Run-time error '76' Path Not found error".
Some part of the path doesn't exist.

I use Dir to create this type of directory structure.
For example I have three fields in a table each
one being a seperate directory level
So you have to walk down the path creating each level
Now Dir has a problem especially with deletes

The Dir function may hold an OS lock on the directory even after Access has
been terminated. To get around this point the DIR function at a directory,
you dont want to delete. Play around with code below to prove the point.
So you may want to use FSO instead

Also look at last routine to check for invalid DOS characters in path


'**************************************
' Name: CreateDirectoryStruct
' Description:Creates all non-existing
'   folders in a path. Local or network UNC path.
' By: Bill Jones
'
' Inputs:CreateThisPath as string
'

'CreateDirectoryStruct("c:\temp\b\a")

 Sub CreateDirectoryStruct(CreateThisPath As String)

    'do initial check
    Dim ret As Boolean, temp$, ComputerName As String, IntoItCount As 
Integer, X%, _
              WakeString As String
    Dim MadeIt As Integer
    If Dir$(CreateThisPath, vbDirectory) <> "" Then Exit Sub
    'is this a network path?

    If Left$(CreateThisPath, 2) = "\\" Then ' this is a UNC NetworkPath
        'must extract the machine name first, th
        '     en get to the first folder
        IntoItCount = 3
        ComputerName = Mid$(CreateThisPath, IntoItCount, 
InStr(IntoItCount, _
                 CreateThisPath, "\") - IntoItCount)
        IntoItCount = IntoItCount + Len(ComputerName) + 1
        IntoItCount = InStr(IntoItCount, CreateThisPath, "\") + 1
        'temp = Mid$(CreateThisPath, IntoItCount
        '     , x)
    Else ' this is a regular path
        IntoItCount = 4
    End If

    WakeString = Left$(CreateThisPath, IntoItCount - 1)
    'start a loop through the CreateThisPath
    '     string

    Do
        X = InStr(IntoItCount, CreateThisPath, "\")


        If X <> 0 Then
            X = X - IntoItCount
            temp = Mid$(CreateThisPath, IntoItCount, X)
        Else
            temp = Mid$(CreateThisPath, IntoItCount)
        End If

        IntoItCount = IntoItCount + Len(temp) + 1
        temp = WakeString + temp
        'Create a directory if it doesn't alread
        '     y exist
        ret = (Dir$(temp, vbDirectory) <> "")
        If Not ret Then
            'ret& = CreateDirectory(temp, Security)
            Debug.Print "MD=" & temp
            MkDir temp
        End If

        IntoItCount = IntoItCount 'track where we are in the String
        WakeString = Left$(CreateThisPath, IntoItCount - 1)
    Loop While WakeString <> CreateThisPath

End Sub

Function NameFix(NameIn As String) As String
' replaces illegal character with underscore
' for illegal filenames in windows dos
   Const ILLEGAL_CHARACTERS = "/\:*?<>|"""
   ' = /\:*?<>|"
   Dim i As Integer
   Dim iTmp As Integer
   Dim NameFixTemp As Variant
   'replace illegal filename character with an underscore
   NameFixTemp = NameIn

   For i = 1 To Len(ILLEGAL_CHARACTERS)
    NameFixTemp = Replace(NameFixTemp, Mid$(ILLEGAL_CHARACTERS, i, 1), "_")
     ' iTmp = InStr(1, NameFix, Mid$(ILLEGAL_CHARACTERS, i, 1))
     ' If iTmp > 0 Then
     '    Mid$(NameFix, iTmp, 1) = "_"
     ' End If
   Next
   'non ascii printing characters
  ' Just realized this code will also replace spaces with
  'underscores.
'to accept spaces, change
'>       If iTmp < 33 Or iTmp > 126 Then to
'>       If iTmp < 32 Or iTmp > 126 Then

   For i = 1 To Len(NameFixTemp)
      iTmp = Asc(Mid$(NameFixTemp, i, 1))
      If iTmp < 32 Or iTmp > 126 Then
         Mid$(NameFixTemp, i, 1) = "_"
      End If
   Next
   NameFix = NameFixTemp
End Function



Kaup, Chester wrote:

>When I try the following I get a runtime error 76
>
>If Not fso.folderexists(ResultsPath2) Then
>    fso.CreateFolder ("C:\Files1\Excel1\Scaleup1")
>End If
>
>-----Original Message-----
>From: accessd-bounces at databaseadvisors.com
>[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Jim Moss
>Sent: Friday, April 28, 2006 11:06 AM
>To: Access Developers discussion and problem solving
>Subject: Re: [AccessD] Make Folder Problem
>
>Chester,
>
>I use the fso.CreateFolder("C:\Accounts Payable\Processed") and it
>creates
>sub folders just fine.
>
>Jim
>
>  
>
>>I use the following code on my machine to create a folder and it works
>>fine. Just tried it on another users machine and got a message could
>>    
>>
>not
>  
>
>>create folder. I was able to do it manually. Any thoughts?
>>
>>
>>
>>ChDrive "C:"
>>
>>Set fso = CreateObject("Scripting.FileSystemObject")
>>
>>ResultsPath = "C:\Files\Excel\Scaleup10"
>>
>>
>>
>>If Not fso.folderexists(ResultsPath) Then
>>
>>    MkDir "C:\Files\Excel\Scaleup10"
>>
>>End If
>>
>>
>>
>>Chester Kaup
>>
>>Engineering Technician
>>
>>Kinder Morgan CO2 Company, LLP
>>
>>Office (432) 688-3797
>>
>>FAX (432) 688-3799
>>
>>
>>
>>
>>
>>No trees were killed in the sending of this message. However a large
>>number of electrons were terribly inconvenienced.
>>
>>
>>
>>--
>>AccessD mailing list
>>AccessD at databaseadvisors.com
>>http://databaseadvisors.com/mailman/listinfo/accessd
>>Website: http://www.databaseadvisors.com
>>
>>    
>>
>
>
>  
>

-- 
Marty Connelly
Victoria, B.C.
Canada






More information about the AccessD mailing list