Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel Len()作为Dir()的参数_Excel_Vba - Fatal编程技术网

Excel Len()作为Dir()的参数

Excel Len()作为Dir()的参数,excel,vba,Excel,Vba,所以我在一个文件夹中循环,并设置了一些参数来过滤循环。我也试图对文件长度这样做,但我得到了一个运行时错误13类型不匹配。猜测是否无法使用文件长度作为Dir的参数?什么是好的解决方法 path = subF & "\" extension = "*.xlsm" partialName = "C*" file = Dir(path & partialName & Len(file) = 13 & extension) '<- error 在循环内部,但不深入讨

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

path = subF & "\"
extension = "*.xlsm"
partialName = "C*"
file = Dir(path & partialName & Len(file) = 13 & extension) '<- error
在循环内部,但不深入讨论细节,我需要在循环外部这样做


两者都没有帮助。因此,似乎只讨论文件长度,而不是excel://

您希望总共13个字符长的文件名包含句点和四个字母的文件扩展名,因此,您确实希望文件名长度为8个字符,以C开头。您当前使用的文件掩码包含星号,它是任意数量字符的通配符。切换到C后面的七个7个问号,您应该筛选文件名,这些文件名以扩展名为.xlsm的C开头,长度为8个字符

path = subF & "\"
extension = ".xlsm"
partialName = "C???????"
file = Dir(path & partialName & extension) '\C???????.xlsm
删除*通配符,改用“?”通配符:

path = subF & "\"
partialName = "C"
extension = ".xlsm"
file = Dir(path & partialName & String(7, "?") & extension)
如果您想在C和.xlsm之间使用13个字符,请使用string13、?相反

根据评论进行编辑:

最小化变量-

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


我能看到的唯一解决方案是使用If语句。只有在发生其他事情时,你才有效地尝试去做某件事。您能否解释一下为什么不能使用If语句,或者提供更多的上下文代码?您是否检查了VBE的即时窗口以查看Debug.Print path&partialName&Lenfile=13&extension返回的是什么?看起来像..\C*False*.xlsm。这将向字符串返回一个数字。这就是你的类型不匹配。使用将为您提供字符串的strnfile。但你仍然有问题。如果长度为字符串C*22=13*,则现在将有一些数字,如22。xlsm@Jeeped如果file=false,您会怎么做?请参见编辑我的评论。你能提供你认为应该得到的字符串吗?Awwww这看起来很有希望…brb编辑:它怎么不起作用??/它给了我更长的文件。tbh,从我的MS-DOS时代起,我记不起它是否会显示4、5或6个字符的文件。肯定是需要测试的东西,根据具体情况决定是否加入。刚查过。它将显示少于8个字符,但不超过8个字符。是否在扩展名的开头保留了星号?看起来像dir C??????。xlsm将返回以C开头的文件,文件名中总共13个字符,不包括带回记忆的.extension。我已经忘了这一切。谢谢Jeeped和Matt ^ ^ Matt的想法是更快地在partialName中添加扩展。还消除了ext variable.Updated。在发布我的答案之前,我错过了马特的评论。我加入了“String7”,以便在需要时增加一些灵活性。很酷,我喜欢这项工作。
path = subF & "\C" & String(7, "?") & ".xlsm"
file = Dir(path)
file = Dir(subF & "\C???????.xlsm")