我编写了一个代码,它将提取特定文件夹/目录中存在的所有子文件夹。这是代码。
ComboBox10.List = Split(CreateObject("wscript.shell").exec("cmd /c Dir ""C:\Users\inkapb\AppData\Local\Temp\EPC AutoTool\Projects\*."" /b /s").stdout.readall, vbCrLf)
在上面的代码中,将填充所有子文件夹路径而不是子文件夹名称。 任何人都可以帮助我实现我的要求
答案 0 :(得分:1)
在命令按钮代码中,你可以使用类似的东西。
当我使用它时,只显示文件夹名称,而不是路径。
我使用C:\作为此示例中的主文件夹。
Private Sub CommandButton1_Click()
Dim fs, f, f1, fc, s
Dim folderspec
folderspec = "C:\"
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(folderspec)
Set fc = f.SubFolders
ComboBox1.Clear
For Each f1 In fc
ComboBox1.AddItem f1.Name
Next f1
ComboBox1.Activate
Application.SendKeys "^{F4}"
End Sub
当您选择子文件夹时,第二个组合框将显示文件。
Private Sub ComboBox1_Change()
Dim fs, f, f1, fc, s
Dim folderspec
folderspec = "C:\" & ComboBox1
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(folderspec)
Set fc = f.Files
ComboBox2.Clear
For Each f1 In fc
ComboBox2.AddItem f1.Name
Next f1
ComboBox2.Activate
Application.SendKeys "^{F4}"
End Sub
答案 1 :(得分:0)
您可以尝试使用完整路径名的Replace()函数。 因此:
pathName = "C:\Users\inkapb\AppData\Local\Temp\EPC AutoTool\Projects\"
ComboBox10.List = Split(Replace(CreateObject("wscript.shell").exec("cmd /c Dir ""C:\Users\inkapb\AppData\Local\Temp\EPC AutoTool\Projects\*."" /b /s").stdout.readall, vbCrLf), pathName, "")
答案 2 :(得分:0)
我有不同的建议来满足您的要求。
Sub AddHighPlusOne()
Dim cb As ComboBox
Set cb = ActiveSheet.ComboBox1
Dim objFS As Object
Dim folders As Object
Set objFS = CreateObject("Scripting.FileSystemObject")
Set folders = objFS.GetFolder(Application.ActiveWorkbook.Path)
cb.Clear
For Each Folder In folders.SubFolders
cb.AddItem (Folder.Name)
Next
End Sub