我要根据文件名开头的一系列单元格来搜索文件。
然后,我希望宏在文件名旁边(如果不存在)返回1或0。
我的工作表的文件名设置为A2:A29,对于B2:B29中是否存在文件,我想返回1和0
我已经开始尝试编写宏,但是我被卡住了。请帮助
~/.m2/repository
答案 0 :(得分:2)
A2:A29
-使用Offset
写入B2:B29
。folderPath
以及每个单元格和通配符"*"
中的值连接起来,然后使用Dir
function检查是否存在与该模式匹配的文件。Len
中的String
将是> 0
。Abs(TRUE)
返回1; Abs(FALSE)
返回0。 Sub SiteSignal()
Dim folderPath As String
Dim Filename As Range, rng As Range
folderPath = "C:\Users\RobEi\Documents\MWAM_Eisenrich\Client_Data\Sacramento\Sacramento_Flow_Pressure"
Set Filename = ThisWorkbook.Worksheets("YourSheetName").Range("A2:A29")
For Each rng In Filename
rng.Offset(, 1).Value = Abs(Len(Dir(folderPath & "\" & rng.Value & "*")) > 0)
Next rng
End Sub
答案 1 :(得分:1)
类似的事情应该起作用。在A1中放入文件名。在A2中,您要搜索的文件夹的路径。 A3会告诉您是对还是错
Sub main()
Dim strFile As String
Dim inputDirectoryToScanForFile As String
Dim primaryFile As String
Dim foundFile As Boolean
Filename = ActiveSheet.Range("A1")
inputDirectoryToScanForFile = ActiveSheet.Range("A2")
strFile = Dir(inputDirectoryToScanForFile & "*")
Do While strFile <> ""
If strFile = Filename Then
foundFile = True
Exit Do
End If
strFile = Dir
Loop
ActiveSheet.Range("A3") = foundFile
End Sub
答案 2 :(得分:1)
以上所有方法都可以使用,但这是另一个:D
Sub SiteSignal()
Dim objFSO As Object
Dim objFolder As Object
Dim objFile As Object
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder("C:\Users\RobEi\Documents\MWAM_Eisenrich\Client_Data\Sacramento\Sacramento_Flow_Pressure")
For i = 2 To 29
Range("B" & i) = 0
For Each objFile In objFolder.Files
If Left(objFile.Name, Len(Range("A" & i))) = Range("A" & i) Then
Range("B" & i) = 1
Else
End If
Next objFile
Next i
End Sub