SCRIPT DE BUSCA E ERROR 70 - PERMISSION DENIED
Seguinte...
Tenho um script que faz uma busca no sistema todo...em um TextBox coloco o nome (ou parte do nome) do arquivo e ao clicar em um botão, lista-se em um ListView todos arquivos encontrados no sistema...o que tá ocorrendo é que se durante a busca ele se depara com uma pasta onde não há permissão de acesso (erro Runtime 70 - Permissão Negada.), ele encerra a busca e só lista os arquivos encontrados até o momento do erro...gostaria que ao encontrar a pasta com o acesso negado, ele a pulasse e seguisse para a próxima...
segue script:
Tenho um script que faz uma busca no sistema todo...em um TextBox coloco o nome (ou parte do nome) do arquivo e ao clicar em um botão, lista-se em um ListView todos arquivos encontrados no sistema...o que tá ocorrendo é que se durante a busca ele se depara com uma pasta onde não há permissão de acesso (erro Runtime 70 - Permissão Negada.), ele encerra a busca e só lista os arquivos encontrados até o momento do erro...gostaria que ao encontrar a pasta com o acesso negado, ele a pulasse e seguisse para a próxima...
segue script:
Sub Lista_Busca()
[ô] Procura arquivo em diretório especificado:
Dim Obj_Pst As Folder, Lst As ListItem
Dim v_Cam As String, vTa As Integer
vTa = Len(txt2.Text)
v_Proc = LCase(txt2.Text)
v_Cam = txt1.Text
If txt2.Text = Empty Then
Exit Sub
ElseIf txt1.Text = Empty Then
MsgBox [Ô]Informe a pasta...[Ô], vbInformation
txt1.SetFocus
Exit Sub
End If
Pb1.Min = 0
Pb1.Value = 0
Set Obj_Pst = FSO.GetFolder(v_Cam)
With Lv1.ColumnHeaders
.Clear
.Add , , [Ô]Nome[Ô], 2000, 0
.Add , , [Ô]Caminho[Ô], 4000, 0
.Add , , [Ô]Atributo(s)[Ô], 3000, 0
End With
Lv1.ListItems.Clear
For Each Arq In Obj_Pst.Files
If LCase(Mid(Arq.Name, 1, vTa)) = v_Proc Then
Set Lst = Lv1.ListItems.Add(, , Arq.Name, v_Icon(Arq.Name), v_Icon(Arq.Name))
Lst.SubItems(1) = Arq.Path
Lst.SubItems(2) = Arq.Attributes
End If
Next
For Each Obj In Obj_Pst.SubFolders
Set PST = FSO.GetFolder(Obj)
For Each Arq2 In PST.Files
If LCase(Mid(Arq2.Name, 1, vTa)) = v_Proc Then
Set Lst = Lv1.ListItems.Add(, , , v_Icon(Arq2.Name), v_Icon(Arq2.Name))
Lst.Text = Arq2.Name
Lst.SubItems(1) = Arq2.Path
Lst.SubItems(2) = Arq2.Attributes
End If
Next
Next
LbLst.Caption = Lv1.ListItems.Count & [Ô] Arquivo(s)[Ô]
End Sub
é isso mesmo que causa a interrupção da pesquisa...
Como você não postou o projeto, não dá para testar. Segue um projeto que lista os arquivos e dá o erro, só que com um listbox.
Vou tentar adaptar ao meu...
Valeu !
Valeu !
vc tentou apenas um resume onde ocorreo erro
exemplo
Sub Lista_Busca()
[txt-color=#0000f0]On Error Resume Next[/txt-color]
[ô] Procura arquivo em diretório especificado:
Dim Obj_Pst As Folder, Lst As ListItem
Dim v_Cam As String, vTa As Integer
vTa = Len(txt2.Text)
v_Proc = LCase(txt2.Text)
v_Cam = txt1.Text
If txt2.Text = Empty Then
Exit Sub
ElseIf txt1.Text = Empty Then
MsgBox [Ô]Informe a pasta...[Ô], vbInformation
txt1.SetFocus
Exit Sub
End If
Pb1.Min = 0
Pb1.Value = 0
Set Obj_Pst = FSO.GetFolder(v_Cam)
With Lv1.ColumnHeaders
.Clear
.Add , , [Ô]Nome[Ô], 2000, 0
.Add , , [Ô]Caminho[Ô], 4000, 0
.Add , , [Ô]Atributo(s)[Ô], 3000, 0
End With
Lv1.ListItems.Clear
For Each Arq In Obj_Pst.Files
If LCase(Mid(Arq.Name, 1, vTa)) = v_Proc Then
Set Lst = Lv1.ListItems.Add(, , Arq.Name, v_Icon(Arq.Name), v_Icon(Arq.Name))
Lst.SubItems(1) = Arq.Path
Lst.SubItems(2) = Arq.Attributes
[txt-color=#0000f0]Resume[/txt-color]
End If
Next
For Each Obj In Obj_Pst.SubFolders
Set PST = FSO.GetFolder(Obj)
For Each Arq2 In PST.Files
If LCase(Mid(Arq2.Name, 1, vTa)) = v_Proc Then
Set Lst = Lv1.ListItems.Add(, , , v_Icon(Arq2.Name), v_Icon(Arq2.Name))
Lst.Text = Arq2.Name
Lst.SubItems(1) = Arq2.Path
Lst.SubItems(2) = Arq2.Attributes
[txt-color=#0000f0] Resume[/txt-color]
End If
Next
Next
LbLst.Caption = Lv1.ListItems.Count & [Ô] Arquivo(s)[Ô]
End Sub
exemplo
Sub Lista_Busca()
[txt-color=#0000f0]On Error Resume Next[/txt-color]
[ô] Procura arquivo em diretório especificado:
Dim Obj_Pst As Folder, Lst As ListItem
Dim v_Cam As String, vTa As Integer
vTa = Len(txt2.Text)
v_Proc = LCase(txt2.Text)
v_Cam = txt1.Text
If txt2.Text = Empty Then
Exit Sub
ElseIf txt1.Text = Empty Then
MsgBox [Ô]Informe a pasta...[Ô], vbInformation
txt1.SetFocus
Exit Sub
End If
Pb1.Min = 0
Pb1.Value = 0
Set Obj_Pst = FSO.GetFolder(v_Cam)
With Lv1.ColumnHeaders
.Clear
.Add , , [Ô]Nome[Ô], 2000, 0
.Add , , [Ô]Caminho[Ô], 4000, 0
.Add , , [Ô]Atributo(s)[Ô], 3000, 0
End With
Lv1.ListItems.Clear
For Each Arq In Obj_Pst.Files
If LCase(Mid(Arq.Name, 1, vTa)) = v_Proc Then
Set Lst = Lv1.ListItems.Add(, , Arq.Name, v_Icon(Arq.Name), v_Icon(Arq.Name))
Lst.SubItems(1) = Arq.Path
Lst.SubItems(2) = Arq.Attributes
[txt-color=#0000f0]Resume[/txt-color]
End If
Next
For Each Obj In Obj_Pst.SubFolders
Set PST = FSO.GetFolder(Obj)
For Each Arq2 In PST.Files
If LCase(Mid(Arq2.Name, 1, vTa)) = v_Proc Then
Set Lst = Lv1.ListItems.Add(, , , v_Icon(Arq2.Name), v_Icon(Arq2.Name))
Lst.Text = Arq2.Name
Lst.SubItems(1) = Arq2.Path
Lst.SubItems(2) = Arq2.Attributes
[txt-color=#0000f0] Resume[/txt-color]
End If
Next
Next
LbLst.Caption = Lv1.ListItems.Count & [Ô] Arquivo(s)[Ô]
End Sub
Valeu pessoal !
Vou testar assim que chegar do trabalho !
Vou testar assim que chegar do trabalho !


Tópico encerrado , respostas não são mais permitidas