Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
Home
Discussion GroupsFormsForms ProgrammingQueriesModules / DAO / VBAReports / PrintingMacrosDatabase DesignSecurityConversionImporting / LinkingSQL Server / ADPMultiuser / NetworkingReplicationSetup / ConfigurationDeveloper ToolkitsActiveX ControlsNew UsersGeneral 1General 2
Access DirectoryToolsTutorialsUser Groups
Related Topics
SQL ServerOther DB ProductsMS OfficeMore Topics ...

MS Access Forum / Forms Programming / April 2005

Tip: Looking for answers? Try searching our database.

Seperate text

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
sam - 05 Apr 2005 04:19 GMT
I'm sure this is an easy question and know I've done it before but have just
gone blank on how to do it

I have text of C:/data/Filename.xls and simply want to seperate the
filename.xls from the rest of it so I just show the file name i.e. anything
after the last /
Can someone please remind me on what to use?
Signature

Thanks

Arvin Meyer - 05 Apr 2005 04:32 GMT
Here's a generic file path parser that I picked up from somewhere:

Function ParsePathElement(ByVal strFullPath As String, _
   strElement As String) As String

   ' Returns the required section of the specified Path
   '
   ' In:           strFullPath - a string from which the specified
   '               Path element is to be extracted
(Drive,Dir,DriveDir,Drive &
   '               Dir,File,Ext,FileExt)
   ' Out:          a string of the specified Path element
   ' Usage:        ?ParsePathElement("C:\Win95B\readme.txt", "Drive")

   Dim Drive As String
   Dim Dir As String
   Dim File As String
   Dim Ext As String

   ' Parses FullPath and returns required element

   Dim i As Integer, f As String, Found As Integer
     Drive = left$(CurDir, 2)   ' Current drive if none explicitly
specified
     Dir = ""
     File = ""
     Ext = ""
     strFullPath = Trim$(strFullPath)
   '
   ' Get drive letter
   '
     If Mid$(strFullPath, 2, 1) = ":" Then
       Drive = left$(strFullPath, 2)
       strFullPath = Mid$(strFullPath, 3)
     End If
   '
   ' Get directory name
   '
     f = ""
     Found = False
     For i = Len(strFullPath) To 1 Step -1
       If Mid$(strFullPath, i, 1) = "\" Then
         f = Mid$(strFullPath, i + 1)
         Dir = left$(strFullPath, i)
         Found = True
         Exit For
       End If
     Next i
     If Not Found Then
       f = strFullPath
     End If
   '
   ' Add current directory of selected drive if absolute directory not
specified
   '
     If Dir = "" Or left$(Dir, 1) <> "\" Then
       Dir = Mid$(CurDir(left$(Drive, 1)), 3) & "\" & Dir
     End If
   '
   ' Get File name and extension
   '
     If f = "." Or f = ".." Then
       File = f
     Else
       i = InStr(f, ".")
       If i > 0 Then
         File = left$(f, i - 1)
         Ext = Mid$(f, i)
       Else
         File = f
       End If
     End If

     Select Case strElement
       Case "Drive"
           ParsePathElement = Drive
       Case "Dir"
           ParsePathElement = Dir
       Case "DriveDir"
           ParsePathElement = Drive & Dir
       Case "File"
           ParsePathElement = File
       Case "Ext"
           ParsePathElement = Ext
       Case "FileExt"
           ParsePathElement = File & Ext
     End Select
End Function
Signature

Arvin Meyer, MCP, MVP
Microsoft Access
Free Access downloads:
http://www.datastrat.com
http://www.mvps.org/access

> I'm sure this is an easy question and know I've done it before but have just
> gone blank on how to do it
[quoted text clipped - 3 lines]
> after the last /
> Can someone please remind me on what to use?
'69 Camaro - 05 Apr 2005 05:13 GMT
Hi, Sam.

There are a number of ways to separate the file name from the rest of the
path in a text string.  Here's one of the simplest if you are using Access 2K
or newer:

' * * * * Start Code * * * *

Public Function getFileName(sPathAndFileName As String) As String

   Dim sArray() As String
   Dim idx As Long
   
   If (Nz(sPathAndFileName, "") <> "") Then
       sArray() = Split(sPathAndFileName, "\", -1, vbTextCompare)
       idx = UBound(sArray)
       getFileName = sArray(idx)
   End If
   
   Exit Function
   
ErrHandler:

   MsgBox "Error in getFileName( )." & vbCrLf & vbCrLf & _
       "Error #" & Err.Number & vbCrLf & Err.Description
   Err.Clear
   getFileName = sPathAndFileName

End Function        '  getFileName( )

' * * * * End Code * * * *

HTH.

Gunny

See http://www.QBuilt.com for all your database needs.
See http://www.Access.QBuilt.com for Microsoft Access tips.

(Please remove ZERO_SPAM from my reply E-mail address, so that a message
will be forwarded to me.)

- - -
When you see correct answers to your question posted in Microsoft's Online
Community, please sign in to the Community and mark these posts as "Answers,"
so that all may benefit by filtering on "Answered questions" and quickly
finding the right answers to similar questions.  Remember that the first and
best answers are often given to those who have a history of rewarding the
contributors who have taken the time to answer questions correctly.

> I'm sure this is an easy question and know I've done it before but have just
> gone blank on how to do it
[quoted text clipped - 3 lines]
> after the last /
> Can someone please remind me on what to use?
Mike Painter - 05 Apr 2005 05:44 GMT
> I'm sure this is an easy question and know I've done it before but
> have just gone blank on how to do it
[quoted text clipped - 3 lines]
> anything after the last /
> Can someone please remind me on what to use?

This is hard coded but should give you an idea

Public Function parsefilename()
Dim filename, results
results = Array(4)

filename = "C:/data/Filename.xls"
filename = Replace(filename, ":", "") ' not needed if you want to see "C:"
filename = Replace(filename, ".", "/")
results = Split(filename, "/")
MsgBox results(0) & "  " & results(1) & "  " & results(2) & "  " &
results(3)
End Function

This obviously could be more general by using a larger array size.
Less obviious but more valuable in the long run if you need it a lot is to
build a function that would count the delimiters then set the array to the
count plus one.

Ideas compliments of Pick Basic, where the Replace command is *MUCH* more
powerful.
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.