我有一个文件夹(每次都是同一个文件夹 - 所以我不需要浪费时间使用Application.FileDialog选择它(,我需要将所有文件名提取到Excel列C中。
这是我在 application.FileDialog(( 的堆栈溢出上找到的代码,但我想对文件夹的路径进行硬编码(C:\Users\michal\SkyDrive\csv\bossa\mstcgl_csv(。
我的另一个问题(重要(xDirectory$,xFname$和InitialFoldr$变量末尾的$符号是什么,为什么我不能将它们声明as 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:UsersmichalSkyDrivecsvbossa"
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 基础知识,但我仍然不明白很多东西。请回答$ 符号问题:-(
废弃FileDialog
并直接使用 Dir
函数:
Sub GetFileNames()
Const InitialFoler As String = "C:UsersmichalSkyDrivecsvbossa"
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
的路径写入字符串:
xDirectory$ = .SelectedItems(1) & ""
现在,您只需要将文件夹硬编码为该字符串:
xDirectory$ = "C:UsersmichalSkyDrivecsvbossa"
并删除与FileDialog
部分相关的所有代码。
至于"$"部分,见@BrakNicku上面的回答。