2016-08-22 258 views
-2

使用VBA,是否可以獲取包含文件的文件夾的名稱?如何從文件路徑獲取父文件夾的名稱?

輸入:C:\Windows\System32\notepad.exe

輸出:System32

+0

'StrReverse(斯普利特(StrReverse( 「C:\ WINDOWS \ SYSTEM32 \ NOTEPAD.EXE」), 「\」)(1))' – cyboashu

+1

它是在Docs.SO:只檢索從路徑文件路徑](http://stackoverflow.com/documentation/vba/990/scripting-filesystemobject/11587/retrieve-only-the-path-from-a-file-path#t=201608222101170802615) –

+0

謝謝馬特,這很接近但它會返回完整的父路徑 – Fidel

回答

0

這將返回父文件夾名稱:

Public Function GetParentFolderName(ByVal path As String) As String 
    Dim result As String 
    With fso = CreateObject("Scripting.FileSystemObject") 
     result = .GetParentFolderName(path) 
     GetParentFolderName = Mid(result, InStrRev(result, "\") + 1) 
    End With 
End Function 

用法:

Sub GetParentFolderNameTest() 
    Debug.Print GetParentFolderName("C:\Windows\System32\notepad.exe") 
End Sub 

輸出:

System32 
+1

@Fidel ...您可以在Documentation部分編寫以提高技能。而不是詢問問題並給出答案。謝謝。 – HA560

+1

@ HA560我不認爲自己應該有一個主題(或一個問答)......''GetParentFolderName'已經被記錄下來了,就像'InStrRev'一樣 - 這只是將兩者結合起來而已。 –

+0

SO上的絕大多數解決方案都是簡單的代碼組合。我發佈問答的原因是因爲我沒有在SO或其他地方找到解決這個問題的解決方案。 – Fidel

1

你可以做簡單(沒有裁判需要):

Function ParentFolder(ByVal path As String) 
     vArray = Split(path, "\") 
     size = UBound(vArray) 
     ParentFolder= vArray(size - 1) 
End Function 

然後調用

ParentFolder("what\ever\path\to\a\file.ext") 

如果你需要一個文件夾類似的父文件夾,通過

替換最後一行
ParentFolder = vArray(size) 

例如,當前應用程序的父文件夾(excel工作簿)

ParentFolder(ActiveWorkbook.path) 
相關問題