【发布时间】:2020-07-09 14:08:46
【问题描述】:
以下代码循环遍历文件夹中的文件并将文件名添加到 Excel 中的范围内。
Dim oFSO As Object
Dim oFolder As Object
Dim oFile As Object
Dim i As Integer
Dim DNDsh As Worksheet
Dim wb As Workbook
'On Error GoTo ErrHandlr
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oFolder = oFSO.GetFolder("H:\Desktop\FILES")
Set wb = Workbooks("DOC.xlsm")
Set DNDsh = wb.Worksheets("DO NOT DELETE")
DNDsh.Range("A:A").ClearContents
For Each oFile In oFolder.Files
DNDsh.Cells(i + 1, 1) = oFile.Name
i = i + 1
Next oFile
我希望排除名称中包含“POSITION”的文件。
我尝试过使用 InStr,但这不起作用。
For Each oFile In oFolder.Files
If InStr(oFile.Name, "Position") < 0 Then
DNDsh.Cells(i + 1, 1) = oFile.Name
i = i + 1
End If
Next oFile
【问题讨论】:
-
检查documentation,如果找不到文本,
InStr返回的内容。提示:不小于 0。 -
所以在这种情况下应该是 If InStr(___) =0?我对此进行了测试,但它似乎不起作用。 @大本
-
应该是
=0。在返回值部分下,如果string2 is not found,则结果为0。 -
抱歉,我确实读过它。我尝试了 =0,但它返回了所有值。我是否正确使用“oFile.Name”?
-
也许
Debug.Print InStr(oFile.Name, "Position")看看InStr实际返回了什么。