Aqui está minha abordagem para me aproximar do problema real:
Divida a linha muito longa que causa o problema em partes menores, por exemplo
Set wrkbk = Workbooks.Open(path & filename)
Set sht = wrkbk.Sheets("Sheet1")
Set rang = sht.UsedRange
Set fnd = rang.Find(BOM)
If Not (fnd Is Nothing) Then
cpy = fnd.Offset(0, 5).Copy
End If
Então você verá que o problema está na linha Set sht = wrkbk.Sheets("Sheet1")
.
Isso significa que existe uma pasta de trabalho que não possui uma planilha chamada "Sheet1". Talvez a folha tenha sido renomeada pelo usuário.
Quando o Excel parar no erro, clique com o botão direito do mouse em filename
e escolha Add watch
para ver qual arquivo é afetado pelo nome incorreto da planilha.