我正在读取目录中多个文件的名称。每个文件都有一个标题,其中有五个破折号。我想将这些名称打印到一个已经被破折号分开并放入单个单元格中的标题的表格。
例如,输入:
Marie-Loves-orange-tabby-cats-100
Shelby Hates-white-winged-moths-200
输出(线代表单元格(:
玛丽|爱|橙色|塔比|猫|100
谢尔比|讨厌|白色|有翼|飞蛾|200
我没有看到一种优雅的方式将单一维数组打印到单元格(尽管我的方式也不是非常优雅(,而我能找到的示例并未通过变化的值循环。我尝试了一个简单的a:e作为范围,但这在整个单元格上打印了相同的文件名。为了解决这个问题,我制作了一个具有可变值的字符串作为范围,以便它只能在这些单元格中打印,然后向下移动。A1:E1,然后是A2:E2,...等等。
Dim vaArray As Variant
Dim i As Integer
Dim oFile As Object
Dim oFSO As Object
Dim oFolder As Object
Dim oFiles As Object
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oFolder = oFSO.GetFolder(sPath)
Set oFiles = oFolder.Files
If oFiles.Count = 0 Then
file_list = False
Exit Function
End If
ReDim vaArray(1 To oFiles.Count)
Dim afterSplit() As String
Dim rangeString As String
Worksheets("filenames").Activate
i = 1
For Each oFile In oFiles
afterSplit = Split(oFile.Name, "-", 5)
rangeString = "A" + Str(i) + ":" + "E" + Str(i)
Range(rangeString).Value = afterSplit
i = i + 1
Next
然而,这会抛出一个"消息"对象'_global'失败"失败"错误,而无需打印任何内容。感谢您对此的任何帮助。
编辑:添加了较大的代码,以清晰地添加。
来自Str
文档:
当数字转换为字符串时,始终为数字符号保留一个领先空间。如果数字为正,则返回的字符串包含一个领先空间,并且隐含了加号。
如果您Debug.Print "A" + Str(i) + ":" + "E" + Str(i)
,您将看到领先空间,以及这是无效的范围参考:A 1:E 1
而不是A1:E1
。
使用&
进行连接,并完全避免Str
。
"A" & i & ":E" & i