Len()作为Dir()的参数

时间:2015-09-01 16:12:34

标签: excel excel-vba vba

所以我循环浏览一个文件夹并设置了一些参数来过滤循环。我也试图这样做文件长度,但我得到运行时错误13类型不匹配。猜测那里没有办法使用文件长度作为Dir()的参数?什么是一个好的解决方法?

path = subF & "\"
extension = "*.xlsm"
partialName = "C*"
file = Dir(path & partialName & Len(file) = 13 & extension) '<- error

我能做到

length = Len(file)
If length = 13 Then 

在循环内部,但没有详细说明,我需要在循环之外这样做。

thisthis都没有帮助。而且似乎只讨论文件长度python而不是excel:/

2 个答案:

答案 0 :(得分:2)

您希望文件名长度总共包含13个字符,以包含句点和四个字母的文件扩展名,因此您确实需要长度为8个字符且以C开头的文件名。您当前使用的文件掩码涉及星号,它是任意数量字符的通配符。在 C 之后切换到七(7)个问号,您应该过滤Dir function以获取八个字符长的文件名,以 C 开头.xlsm文件扩展名。

path = subF & "\"
extension = ".xlsm"
partialName = "C???????"
file = Dir(path & partialName & extension) '\C???????.xlsm

答案 1 :(得分:2)

删除*通配符并使用'?'通配符:

path = subF & "\"
partialName = "C"
extension = ".xlsm"
file = Dir(path & partialName & String(7, "?") & extension)

如果你想在“C”和“.xlsm”之间使用13个字符,请使用string(13, "?")

编辑以回复评论:

最小化变量 -

path = subF & "\C" & String(7, "?") & ".xlsm"
file = Dir(path)

file = Dir(subF & "\C???????.xlsm")