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