我有一个宏,它读取包含逗号分隔的文件名列表的单元格,并将这些单元格的值转换为数组。然后使用此VB数组来验证另一个工作表中列出的文件是否存在。
我遇到单个单元格中列出的文件名存在问题,这些文件名在某些文件名中有逗号:
Cell A1: testfile.txt, testfile2.txt, testfile3.pdf, test, file, 4.doc.
Cell A2:testfile5.txt, testfile6.text
当我的VB代码读取Cell A1中的上述单元格时 - test,file和4.doc被分成单独的数组值。我知道在文件名中使用逗号是不好的做法,但不幸的是我无法控制它。
有没有人有一个很好的方法可以正确地将单元格值读入数组,以便在上面的例子中测试,文件,4.doc被记录为数组中的一个值..不是3 ??
目前我的代码部分是:
MySearchString = Worksheets("Comms Summary").Range("G" & RowCounter).text
'read string from cell to be converted to array
FileListArray() = Split(MySearchString, ", ")
'split string into array
R = UBound(FileListArray)
' resize array.
答案 0 :(得分:1)
对我来说这看起来不可能,因为有人可以命名他的文件
document.txt, something.doc
(是的,一个文件看起来像两个!)。
即使这绝对没有意义,这也被视为有效文件名,您将无法检测到这些。您无法构建安全功能来过滤它。
我能想到的唯一方法是循环你的数组并检查文件系统中是否存在该文件的每个项目。但如果它不存在,您将不得不实现一个非常智能的逻辑来查找真正的文件名。这对我来说看起来不是一个干净的实现。
我会从另一边接近:如何生成逗号分隔文件列表?你能以分号分隔的文件列表生成它吗?你的问题肯定是以逗号分隔的列表。尝试解决它。逗号是一个非常糟糕的文件分隔符。