vba - 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
谢谢你的帮助。问候,巴鲁。
解决方案
初读,我觉得你的功能还可以,但是你用的不好。
我会使用(快速编写 - 未经测试,抱歉)
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 用作全局变量。这通常是一种不好的做法,除非您有特定的理由这样做。
推荐阅读
- unity3d - DualShock 4 控制器扬声器访问
- javascript - 为什么 Yarn 有时会在它表示版本的方式之间打乒乓球?
- java - 使用 EXACTLY 1 流查找数组中元素对的最大差异
- git - 从 git repo 克隆单个分支
- ruby-on-rails - 准确计时 RSpec 规范
- eclipse - Eclipse RCP 产品文件 - 如何处理具有平台特定依赖关系的多个平台
- laravel - 如何将当前/主要模型数据传递给 eagerloading 约束以用作变量
- unit-testing - 如何在 Grails 单元测试中使用 Spock 模拟 passwordEncoder
- azure - Azure Pipelines“需要模板”检查不起作用
- python - discord.errors.Forbidden:403 Forbidden(错误代码:50013):设置角色时缺少权限错误