如何显示combobox中的path名称的文件名称

我写了一个代码,将提取出现在一个特定的文件夹/目录内的所有子文件夹。 这是代码。

ComboBox10.List = Split(CreateObject("wscript.shell").exec("cmd /c Dir ""C:\Users\inkapb\AppData\Local\Temp\EPC AutoTool\Projects\*."" /b /s").stdout.readall, vbCrLf) 

在这里输入图像说明

在上面的代码中,所有的子文件夹path都被填充,而不是子文件夹名称。 任何人都可以帮助我达到我的要求吗?

我有一个不同的build议来满足你的要求。

 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 

在你的命令button代码中,你可以使用这样的东西。

当我使用这个,只是文件夹名称显示,而不是path。

在本例中,我使用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 

一旦点击这将是结果

在这里输入图像说明

当你select一个子文件夹时,第二个combobox将显示这些文件。

 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 

这些结果看起来像这样

在这里输入图像说明

你可以用完整的path名尝试一个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, "")