gpt4 book ai didi

VBA - 将文件夹内容写入工作表

转载 作者:行者123 更新时间:2023-12-04 22:05:31 26 4
gpt4 key购买 nike

目前我正在使用一个 VBA 宏,该宏旨在收集主文件夹中所有子文件夹的名称并将它们写入工作表。当前的方法是使用 Shell 命令打开 cmd.exe 并将列表写入文本文件。随后打开该文件并读入工作表:

Sub Button_GetList()
Dim RunCommand As String, FolderListPath As String, _
TempFile As String, MainFolder As String
TempFile = "foldernames.txt"
MainFolder = "simulations"

RunCommand = _
"cmd.exe /c dir " & ThisWorkbook.Path & "\" & MainFolder & " /b > " _
ThisWorkbook.Path & "\" & TempFile

x = Shell(RunCommand, 1)
FolderListPath = ThisWorkbook.Path & "\" & TempFile
Close #1
Open FolderListPath For Input As #1
j = 1
Do While Not EOF(1)
Line Input #1, TextLine
MAIN.Cells(j, 1) = TextLine
j = j + 1
Loop
Close #1
End Sub

主要问题是shell命令在下一个函数尝试打开它之前基本上没有足够快地创建文本文件,这会导致困惑。此宏设置为在打开工作簿时运行,因此非常关键。我目前通过添加来解决这个问题
Application.Wait (Now + TimeValue("0:00:05"))

在 shell 命令运行之后,但是这个解决方案对我来说太不雅了。我很好奇是否有一种我可以采用的方法来消除创建然后读取文本文件的需要。我可以直接获取文件夹内容的列表吗?

最佳答案

是的,您可以通过编程方式(Dir$())获取列表,而不是通过运行外部进程;

Dim lookin As String, directory As String, j As Long

lookin = "c:\windows\"
directory = Dir$(lookin & "*.*", vbDirectory)
j = 1

Do While Len(directory)
If directory <> "." And directory <> ".." And GetAttr(lookin & directory) And vbDirectory Then
MAIN.Cells(j, 1).Value = directory
j = j + 1
End If

directory = Dir$()
Loop

关于VBA - 将文件夹内容写入工作表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22869087/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com