如何在组合框中显示路径名中的文件名

时间:2016-02-02 08:24:48

标签: excel vba excel-vba combobox

我编写了一个代码,它将提取特定文件夹/目录中存在的所有子文件夹。这是代码。

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

enter image description here

在上面的代码中,将填充所有子文件夹路径而不是子文件夹名称。 任何人都可以帮助我实现我的要求

3 个答案:

答案 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

点击后,这将是结果

enter image description here

当您选择子文件夹时,第二个组合框将显示文件。

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

这些结果将如下所示

enter image description here

答案 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