我正在構建目錄中的文件索引。 第1列與文件夾名稱,第2列與文件名VBA使用字符串中的另一個對象修剪一個對象(與FSO.Getfolder相關)基本結束與文件的相對路徑
我已經設法得到實際的文件名和超鏈接的文件名已經。 但我有問題列出列1中的文件的路徑,使用相對路徑,包括其子文件夾。
說我有以下文件夾: 「C:\ users \ ME \ Documents」 該文件夾中有許多子文件夾。
我想要實現的是一個字符串,列出該實際子文件夾的路徑。 例子:
"C:\users\ME\Documents\Subfolder1\Subfolder2\CharlieSheen.pdf"
Column 1 (A5) = Subfolder1\Subfolder2\
Column 2 (B5) = CharlieSheen.pdf
正如我說我能控制的第2列。
我已經使用這個腳本是
Private Function GetAllFiles(ByVal strpath As String, _
ByVal intRow As Integer, ByRef objFSO As Object) As Integer
Dim objFolder As Object
Dim objFile As Object
Dim i As Integer`
i = intRow - ROW_FIRST + 1
Set objFolder = objFSO.Getfolder(strpath)
For Each objFile In objFolder.Files
'print file path
Cells(i + ROW_FIRST - 1, 1) = objFolder.Name
i = i + 1
Next objFile
GetAllFiles = i + ROW_FIRST - 1
End Function
我想通了,改變
Cells(i + ROW_FIRST - 1, 1) = objFolder.Name
到Cells(i + ROW_FIRST - 1, 1) = objFSO.Getfolder(".")
正是我想要從中刪除第一個字符串!
所以我基本上要編寫一個腳本,說:
Cells(i + ROW_FIRST - 1, 1) = objFolder.Name - objFSO.Getfolder(".")
但我需要幫助,因爲該命令顯然是行不通的。
這可能有一個完全不同的方法,但由於我的宏已經有很多代碼,使用修剪或替換或類似將是最簡單的?
編輯: 我的腳本中還有一個名爲「GetAllFolders」的函數。 也許我可以通過某種方式調用它來實現我想要的字符串?
Private Sub GetAllFolders(ByVal strFolder As String, _
ByRef objFSO As Object, ByRef intRow As Integer)
Dim objFolder As Object
Dim objSubFolder As Object
'Get the folder object
Set objFolder = objFSO.GetFolder(strFolder)
'loops through each file in the directory and
'prints their names and path
For Each objSubFolder In objFolder.subfolders
intRow = GetAllFiles(objSubFolder.Path, _
intRow, objFSO)
'recursive call to to itsself
Call GetAllFolders(objSubFolder.Path, _
objFSO, intRow)
Next objSubFolder
End Sub
'細胞(1 + ROW_FIRST -1,1)=替換(objFolder.Name,objFSO.GetFolder( 「」), 「」)' – Dave
謝謝您回覆。與Macro Man的建議類似,此解決方案僅返回「Subfolder2」。不是「Subfolder1 \ Subfolder2」。 你知道爲什麼嗎?我複製的腳本還具有「GetAllFolders」功能並使用遞歸方法。 如果我更新我的問題來包含它,它會有幫助嗎? – Doons
如果您只需要從路徑中刪除「C:\ Users \ username」,您可以將其替換爲「Cells(i + ROW_FIRST -1,1)= Replace(objFolder.Name,」C:\ Users \ ME \ Documents \「,」「)'或者它需要爲所有用戶工作,那麼就像'Replace(」C:\ Users \ ME \ Documents \ Somefile.pdf「,CStr(oShell.ExpandEnvironmentStrings(」%userprofile %「)),」「)' – Dave