Vba 我可以同时搜索两个扩展名吗?代码在搜索扩展名.csv和.xlsx时出现类型不匹配错误

Vba 我可以同时搜索两个扩展名吗?代码在搜索扩展名.csv和.xlsx时出现类型不匹配错误,vba,excel,csv,Vba,Excel,Csv,对于扩展(LExtension),它会给我错误消息:“类型不匹配” 我有像.xlsx和.csv这样的扩展文件,但是它会收到一条错误消息。 代码不是在一行中同时使用这两个扩展。如果我使用了and,或者它给了我一条错误消息。 扩展> =“/>代码(考虑空白)< /P> 子checkifileexists() Dim LRow作为整数 将LPath设置为字符串 像弦一样的张力 作为布尔值的Dim l连续 L继续=真 LRow=3 LPath=“D:\Raw Files\” LExtension=“.C

对于扩展(
LExtension
),它会给我错误消息:“类型不匹配”
我有像
.xlsx
.csv
这样的扩展文件,但是它会收到一条错误消息。
代码不是在一行中同时使用这两个扩展。如果我使用了and,或者它给了我一条错误消息。
<代码>扩展> =“/>代码(考虑空白)< /P>
子checkifileexists()
Dim LRow作为整数
将LPath设置为字符串
像弦一样的张力
作为布尔值的Dim l连续
L继续=真
LRow=3
LPath=“D:\Raw Files\”

LExtension=“.CSV”和“.xlsx””使用
FileSystemObject
查找文件。将对Microsoft脚本运行时的引用添加到工作簿中。然后在Sub中添加以下声明:

Dim oFSO As FileSystemObject
现在将您的
If Len(Dir(…
)更改为

If oFSO.FileExists(LPath & Cells(LRow, "M").Value & ".csv") OR _
   oFSO.FileExists(LPath & Cells(LRow, "M").Value & ".slsx") Then

更好的做法是不要只使用
单元格
。我会使用对您正在使用的工作表的引用(即
工作表(“Sheet1”)。单元格
)。此外,请确保在退出子项之前从内存中清除对象(即
一组o=Nothing
)…同样,良好的做法

注意:引用
单元格
范围
时,无需将
LRow
更改为字符串
抛出错误,因为您在该行中使用了
作为按位运算符,并且不能将两个字符串组合在一起。@Nilesh如果这有帮助,请不要忘记接受答案,因为这是stackoverflowHi Zac中获得分数的方式,谢谢您的帮助。当我将'Dim of so as FileSystemObject'放在一起时,它给出了给我一条错误消息“编译错误”。是否添加了对
Microsoft脚本运行时的引用
?如果没有,请从菜单中选择:
工具>引用..
。这将显示
引用
窗口。向下滚动,直到看到
Microsoft脚本运行时
,然后选择它。运行代码直到否则,如果存在oFSO.FILE(LPath和Cells(LRow,“M”).Value和“.csv”)或oFSO.FILE(LPath和Cells(LRow,“M”).Value和“.xlsx”),则“获取错误消息‘未设置对象变量或块变量’。子CheckIfFileExists()Dim LRow作为整数Dim LPath作为字符串Dim LExtension作为字符串Dim LContinue作为布尔Dim of So作为文件系统对象
If oFSO.FileExists(LPath & Cells(LRow, "M").Value & ".csv") OR _
   oFSO.FileExists(LPath & Cells(LRow, "M").Value & ".slsx") Then