Excel VBA,不使用Application.FileDialog()导入文件夹中的所有文件的名称

我有一个文件夹(每次都是相同的 – 所以我不需要浪费时间来使用Application.FileDialog来select它),我需要将所有文件名称提取到Excel列C.

这是我在这里用Application.FileDialog()stackoverflow中find的代码,但我想硬编码path到文件夹(C:\ Users \ michal \ SkyDrive \ csv \ bossa \ mstcgl_csv)。

另一个问题我有(重要的)在xDirectory $,xFname $和InitialFoldr $variables的末尾是什么是$符号,以及为什么我不能将它们声明as String ? ? 这些variables是不是string? ?

这是代码:

 Sub GetFileNames() Dim Lista As Worksheet Dim xRow As Long Dim xDirectory$ Dim xFname$ Dim InitialFoldr$ Dim start As Double Dim finish As Double Dim total_time As Double start = Timer ' remember time when macro starts. ThisWorkbook.Sheets("Lista").Range("C1").Select InitialFoldr$ = "C:\Users\michal\SkyDrive\csv\bossa\" With Application.FileDialog(msoFileDialogFolderPicker) .InitialFileName = Application.DefaultFilePath & "\" .Title = "Please select a folder to list Files from" .InitialFileName = InitialFoldr$ .Show ' creates list of files ? ? ? If .SelectedItems.Count <> 0 Then xDirectory$ = .SelectedItems(1) & "\" xFname$ = Dir(xDirectory$, 7) Do While xFname$ <> "" ThisWorkbook.Sheets("Lista").ActiveCell.Offset(xRow, 0) = xFname$ ActiveCell.Offset(xRow) = xFname$ xRow = xRow + 1 xFname$ = Dir Loop End If End With finish = Timer ' Set end time. total_time = Round(finish - start, 3) ' Calculate total time. MsgBox "This code ran successfully in " & total_time & " seconds", vbInformation End Sub 

你们能帮我做吗? 我只是学习了我的VBA基础知识,而且我还是不了解很多东西。 请回答$ sign问题:-)

废弃FileDialog并直接使用Dir函数:

 Sub GetFileNames() Const InitialFoler As String = "C:\Users\michal\SkyDrive\csv\bossa\" Dim Lista As Worksheet Dim filename As String Dim xRow As Long Dim start As Double, finish As Double, total_time As Double start = Timer ' remember time when macro starts. xRow = 1 filename = Dir(InitialFoler & "*.*") With ThisWorkbook.Sheets("Lista") Do While Len(filename) > 0 .Range("C" & xRow).Value = filename xRow = xRow + 1 filename = Dir Loop End With finish = Timer ' Set end time. total_time = Round(finish - start, 3) ' Calculate total time. MsgBox "This code ran successfully in " & total_time & " seconds", vbInformation End Sub 

你可以在这里阅读更多关于Dir函数。

该行将Application.FileDialog的path写入一个string:

 xDirectory$ = .SelectedItems(1) & "\" 

现在您只需要将您的文件夹硬编码为该string:

 xDirectory$ = "C:\Users\michal\SkyDrive\csv\bossa\" 

并删除所有与FileDialog部分相关的代码。

至于“$”部分,请参阅上面的@ BrakNicku的答案。