programing

경로에서 파일 이름을 추출하는 방법은 무엇입니까?

coolbiz 2021. 1. 16. 10:15
반응형

경로에서 파일 이름을 추출하는 방법은 무엇입니까?


VBA 에서 파일 이름 myfile.pdf어떻게 추출 C:\Documents\myfile.pdf합니까?


이것은 snippets.dzone.com 에서 가져온 것입니다 .

Function GetFilenameFromPath(ByVal strPath As String) As String
' Returns the rightmost characters of a string upto but not including the rightmost '\'
' e.g. 'c:\winnt\win.ini' returns 'win.ini'

    If Right$(strPath, 1) <> "\" And Len(strPath) > 0 Then
        GetFilenameFromPath = GetFilenameFromPath(Left$(strPath, Len(strPath) - 1)) + Right$(strPath, 1)
    End If
End Function

Office 2000/2003 용 VBA에서 파일 및 디렉터리로 작업하는 가장 좋은 방법은 스크립팅 라이브러리를 사용하는 것입니다. Microsoft Scripting Runtime에 대한 참조를 추가합니다 (IDE의 도구> 참조).

파일 시스템 개체를 만들고이를 사용하여 모든 작업을 수행합니다.

Dim fso as new FileSystemObject
Dim fileName As String
fileName = fso.GetFileName("c:\any path\file.txt")

FileSystemObject는 훌륭합니다. 특수 폴더 (내 문서 등) 가져 오기, 파일 및 디렉토리를 객체 지향 방식으로 생성, 이동, 복사, 삭제하는 것과 같은 많은 기능을 제공합니다. 확인 해봐.


Dir("C:\Documents\myfile.pdf")

파일 이름이 반환되지만 존재하는 경우에만 반환됩니다.


나는 모든 답변을 읽었으며 단순성 때문에 승리한다고 생각하는 것을 하나 더 추가하고 싶습니다. 허용되는 답변과 달리 이것은 재귀가 필요하지 않습니다. 또한 FileSystemObject를 참조 할 필요도 없습니다.

Function FileNameFromPath(strFullPath As String) As String

    FileNameFromPath = Right(strFullPath, Len(strFullPath) - InStrRev(strFullPath, "\"))

End Function

http://vba-tutorial.com/parsing-a-file-string-into-path-filename-and-extension/ 에는이 코드와 파일 경로, 확장자 및 확장자가없는 파일 이름까지 구문 분석하는 기타 기능이 있습니다.


Dim sFilePath$, sFileName$
sFileName = Split(sFilePath, "\")(UBound(Split(sFilePath, "\")))

이 답변 중 일부가 얼마나 복잡한 지 믿을 수 없습니다.

다음 은 작업을 완료 하는 한 줄 함수 입니다.


** <code> x : \ path \ filename </ code>에서 파일 이름 추출 : **

Function getFName(pf)As String:getFName=Mid(pf,InStrRev(pf,"\")+1):End Function

** <code> x : \ path \ filename </ code>에서 경로 추출 : **

Function getPath(pf)As String:getPath=Left(pf,InStrRev(pf,"\")):End Function

예 :

예


전체 폴더의 경로와 파일 이름을 모두 제공하는 더 강력한 솔루션을 원한다면 다음과 같습니다.

Dim strFileName As String, strFolderPath As String
Dim lngIndex As Long
Dim strPath() As String

strPath() = Split(OpenArgs, "\")   'Put the Parts of our path into an array
lngIndex = UBound(strPath)
strFileName = strPath(lngIndex)    'Get the File Name from our array
strPath(lngIndex) = ""             'Remove the File Name from our array
strFolderPath = Join(strPath, "\") 'Rebuild our path from our array

또는 하위 / 기능으로 :

Private Sub SeparatePathAndFile(ByRef io_strFolderPath As String, ByRef o_strFileName As String)    
    Dim strPath() As String
    Dim lngIndex As Long

    strPath() = Split(io_strFolderPath, "\")  'Put the Parts of our path into an array
    lngIndex = UBound(strPath)
    o_strFileName = strPath(lngIndex)   'Get the File Name from our array
    strPath(lngIndex) = ""              'Remove the File Name from our array
    io_strFolderPath = Join(strPath, "\")     'Rebuild our path from our array  
End Sub

파일의 전체 경로와 함께 첫 번째 매개 변수를 전달하면 폴더 경로로 설정되고 두 번째 매개 변수는 파일 이름으로 설정됩니다.


다음은 Windows, Unix, Mac 및 URL 경로에서 작동하는 간단한 VBA 솔루션입니다.

sFileName = Mid(Mid(sPath, InStrRev(sPath, "/") + 1), InStrRev(sPath, "\") + 1)

sFolderName = Left(sPath, Len(sPath) - Len(sFileName))

다음 코드를 사용하여 출력을 테스트 할 수 있습니다.

'Visual Basic for Applications 
http = "https://www.server.com/docs/Letter.txt"
unix = "/home/user/docs/Letter.txt"
dos = "C:\user\docs\Letter.txt"
win = "\\Server01\user\docs\Letter.txt"
blank = ""

sPath = unix 
sFileName = Mid(Mid(sPath, InStrRev(sPath, "/") + 1), InStrRev(sPath, "\") + 1)
sFolderName = Left(sPath, Len(sPath) - Len(sFileName))

Debug.print "Folder: " & sFolderName & " File: " & sFileName

참조 : Wikipedia-경로 (컴퓨팅)


Excel 매크로에서 파일 이름을 얻으려면 다음과 같이하십시오.

filname = Mid(spth, InStrRev(spth, "\", Len(spth)) + 1, Len(spth))
MsgBox Mid(filname, 1, InStr(filname, ".") - 1)

파일이 실제로 디스크에 존재한다고 확신하는 경우 가장 간단한 방법은 다음과 같습니다.

Dim fileName, filePath As String
filePath = "C:\Documents\myfile.pdf"
fileName = Dir(filePath)

파일이 있는지 확실하지 않거나 지정된 경로에서 파일 이름을 추출하려는 경우 가장 간단한 방법은 다음과 같습니다.

fileName = Mid(filePath, InStrRev(filePath, "\") + 1)

다음은 코드가없는 대체 솔루션입니다. 이 VBA는 Excel 수식 표시 줄에서 작동합니다.

파일 이름을 추출하려면 :

=RIGHT(A1,LEN(A1)-FIND("~",SUBSTITUTE(A1,"\","~",LEN(A1)-LEN(SUBSTITUTE(A1,"\","")))))

파일 경로를 추출하려면 :

=MID(A1,1,LEN(A1)-LEN(MID(A1,FIND(CHAR(1),SUBSTITUTE(A1,"\",CHAR(1),LEN(A1)-LEN(SUBSTITUTE(A1,"\",""))))+1,LEN(A1))))

파일 이름이 아닌 경로가 필요했습니다.

따라서 코드에서 파일 경로를 추출하려면 :

JustPath = Left(sFileP, Len(sFileP) - Len(Split(sFileP, "\")(UBound(Split(sFileP, "\"))))) 

This gleaned from Twiggy @ http://archive.atomicmpc.com.au and other places:

'since the file name and path were used several times in code
'variables were made public

Public FName As Variant, Filename As String, Path As String

Sub xxx()
   ...
   If Not GetFileName = 1 Then Exit Sub '
   ...
End Sub

Private Function GetFileName()
   GetFileName = 0 'used for error handling at call point in case user cancels
   FName = Application.GetOpenFilename("Ramp log file (*.txt), *.txt")
   If Not VarType(FName) = vbBoolean Then GetFileName = 1 'to assure selection was made
   Filename = Split(FName, "\")(UBound(Split(FName, "\"))) 'results in file name
   Path = Left(FName, InStrRev(FName, "\")) 'results in path
End Function

Function file_name_only(file_path As String) As String

Dim temp As Variant

temp = Split(file_path, Application.PathSeparator)

file_name_only = temp(UBound(temp))

End Function
  1. here you give your file name as input of the function
  2. the split function of VBA splits the path in different portion by using "\" as path separator & stores them in an array named "temp"
  3. the UBound() finds the max item number of array and finally assigns the result to "file_name_only" function

Hope this will be helpful.


I am using this function... VBA Function:

Function FunctionGetFileName(FullPath As String) As String
'Update 20140210
Dim splitList As Variant
splitList = VBA.Split(FullPath, "\")
FunctionGetFileName = splitList(UBound(splitList, 1))
End Function

Now enter

=FunctionGetFileName(A1) in youe required cell.

or You can use these...

=MID(A1,FIND("*",SUBSTITUTE(A1,"\","*",LEN(A1)-LEN(SUBSTITUTE(A1,"\",""))))+1,LEN(A1))

Dim nme As String = My.Computer.FileSystem.GetFileInfo(pathFicheiro).Name
Dim dirc As String = My.Computer.FileSystem.GetFileInfo(nomeFicheiro).Directory

ReferenceURL : https://stackoverflow.com/questions/1743328/how-to-extract-file-name-from-path

반응형