首页 > 解决方案 > VBA excel从文件夹中获取文件名

问题描述

从下面的函数中,我无法将文件名转换为 excel。结果变量为空。请帮忙。

Dim Result As Variant

Function GetFileNames(ByVal FolderPath As String) As Variant
Dim i As Integer
Dim MyFile As Object
Dim MyFSO As Object
Dim MyFolder As Object
Dim MyFiles As Object
Set MyFSO = CreateObject("Scripting.FileSystemObject")
Set MyFolder = MyFSO.GetFolder(FolderPath)
Set MyFiles = MyFolder.Files
ReDim Result(1 To MyFiles.Count)
i = 1
For Each MyFile In MyFiles
Result(i) = MyFile.Name
i = i + 1
Next MyFile
GetFileNames = Result
End Function

Sub GetFileNamesToExcel()
For Each MyFile In MyFiles
Result(i) = MyFile.Name
ActiveCell.Cells(i, 1).Value = Result(i)
i = i + 1
Next MyFile
End Sub

谢谢你的帮助。问候,巴鲁。

标签: vbagetfilenames

解决方案


初读,我觉得你的功能还可以,但是你用的不好。
我会使用(快速编写 - 未经测试,抱歉)

Sub GetFileNamesToExcel()
    dim ar 
    ar = GetFileNames("d:\somefolder")
    'for results on a row
    range("a1").resize(1,ubound(ar))= ar  
    'for results in column (more probably what you want)
    range("a1").resize(ubound(ar),1) = application.transpose(ar)
End Sub

而且您绝对不需要将 Result 用作全局变量。这通常是一种不好的做法,除非您有特定的理由这样做。


推荐阅读