Notifications
Clear all

Pesquisar arquivos por nome aproximado

8 Posts
2 Usuários
0 Reactions
2,692 Visualizações
depoisteconto
(@depoisteconto)
Posts: 183
Estimable Member
Topic starter
 

Caros, boa tarde!

Como seria uma pesquisa por aproximação?

Por exemplo:

No diretório o arquivo de chama "Planilhando".

Gostaria de encontrá-lo mesmo se o meu parametro da consulta for "Planilhan".

Vou pesquisar pelo comando Shell do VBA.

Será possível?

At

 
Postado : 10/07/2014 2:21 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Não entendi quanto ao comando Shell, mas uma rotina simples para localizar arquivo por parte do nome utilizando Curinga, seria a abaixo:

Sub LocalizaArqParteNome()
    Dim i As Integer
    Dim sfile As String
    
    With Application.FileSearch
        .LookIn = "C:SeuDiretorio" 'Diretorio a Pesquisar
         
         '* representa caracter Curinga
         'Podendo ser de varias formas
         'Planilhan*
         '*lhan*
        
        .Filename = "Planilhan*"
        
        If .Execute > 0 Then 'Se existir
            For i = 1 To .FoundFiles.Count
                'Workbooks.Open (.FoundFiles(i)) 'Abre o arquivo
                MsgBox (.FoundFiles(i))
            Next i
        End If
        
    End With
    
End Sub

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 10/07/2014 3:29 pm
depoisteconto
(@depoisteconto)
Posts: 183
Estimable Member
Topic starter
 

Não entendi quanto ao comando Shell, mas uma rotina simples para localizar arquivo por parte do nome utilizando Curinga, seria a abaixo:
[]s

Caro Mauro, bom dia!

Obrigado por responder.

Eu uso o Shell porque é comando que consigo abrir documento pelo formulário que eu uso.

Testei o código sugerido deu erro With Application.FileSearch "O objeto não aceita essa ação."

Estou tentando abrir documentos do word e excel, através de um userform excel.

Obs:

Antes eu ocultava a aplicação excel, reexibi novamente para testes, deu na mesma.
O diretório de consulta originalmente está na rede, fiz testes com arquivos em um diretório local C:, também deu na mesma.

Dúvidas:

Você citou uma string sfile. O que ela devia carregar? Não vi no código.
No caso do excel, com ou sem a aplicação visivel, o código não teria que promover uma nova instancia do excel?

Qual(ais) a(s) tese(s)?

At

 
Postado : 14/07/2014 7:58 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Depoisteconto, vamos por parte:
Quanto ao erro:
Testei o código sugerido deu erro With Application.FileSearch "O objeto não aceita essa ação."
Não sei qual versão está utilizando, então faça o seguinte:
No menu projeto , clique em referências e adicione a referência ao Microsoft Scripting Runtime.
Veja mais em:
Informações sobre a classe FileSystemObject
http://support.microsoft.com/kb/185601

Quanto ao solicitado:
Como seria uma pesquisa por aproximação?
Por exemplo:
No diretório o arquivo de chama "Planilhando".
Gostaria de encontrá-lo mesmo se o meu parametro da consulta for "Planilhan".

A Rotina que passei faz exatamente isto, veja que deixei desabilitada a instrução que abre o arquivo se for encontrado, é só habilita-la, mas se pretende utilizar o comando Shell, troque esta instrução pela sua.

Quanto a string sfile, como adaptei de outras rotina que eu tinha ela acabou sem efeito, pode apaga-la.

Esta é a parte que eu não havia entendido:
Vou pesquisar pelo comando Shell do VBA
Voce diz pesquisar e não abrir o arquivo pelo comando Shell.

Uma outra opção de rotina sem Application.FileSearch seria:

Sub VerificaArquivoAbre()
    Dim FileName As String
    Dim Path As String
    Dim sPath As String
    Dim meuArqu As String
    
    Path = "C:SeuDiretorio"
    
    sPath = Path
    
    meuArqu = "Planilhan*" 'Nome Arquivo
   
   'VERIFICA SE O CAMINHO EXISTE
    If Not Dir(sPath, vbDirectory) = vbNullString Then
         'SE EXISTIR
         'adiciona a barra, se não houver
         If Right(sPath, 1) <> "" Then sPath = sPath & ""
            'monta o caminho completo do arquivo
            FileName = Dir(sPath & meuArqu)

        Else

            MsgBox "O CAMINHO :" & Chr(13) & sPath & Chr(13) & "NÃO EXISTE"
            Exit Sub
    End If
      
    'VERIFICA SE O ARQUIVO EXISTE
    If FileName = "planilhando.xls" Then
       'SE EXISTIR, Coloque aqui sua chamada para abrir o arquivo
        MsgBox "OK, Arquivo encontrado"
        Workbooks.Open FileName:=sPath & FileName
       
       Exit Sub
    Else
            MsgBox "O Arquivo:" & Chr(13) & meuArqu & Chr(13) & "NÃO existe !!!"
    End If
        
End Sub

Quanto ao aplicativo visivel ou não, isto não interfere na rotina, e você não havia citado formulário, em criar uma nova instância do excel, e isto já seria outra situação, que não foi solicitada neste tópico.
De uma olhada no tópico abaixo quanto a criar instância do excel :
Abrir o Excel em uma nova instância no Win 7
http://www.tomasvasquez.com.br/forum/vi ... ncia#p7467

Excel – Abrindos arquivos em uma nova instância do Excel
http://www.tomasvasquez.com.br/blog/mic ... a-do-excel

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 14/07/2014 8:54 am
depoisteconto
(@depoisteconto)
Posts: 183
Estimable Member
Topic starter
 

Então vamos lá:

Estou usando a versão 2007 do office.

Adicionei a referencia Microsoft Scripting Runtime, no entanto persiste o erro With Application.FileSearch "O objeto não aceita essa ação."

A segunda rotina sugerida funciona perfeitamente. O caracteres curinga foi providencial.

Por enquanto vou abrir documento word, então adicionei a referencia na biblioteca, criei o objeto e o orientei.

Dim Word As Word.Application

Set Word = CreateObject("Word.Application")
Word.Documents.Open (Path & FileName)
Word.Visible = True

Muito obrigado Mauro, ajudou muito.

At

 
Postado : 14/07/2014 2:41 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Tópico destrancado por solicitação do autor.

Quando a dúvida for sanada volte a marcar o tópico como Resolvido que trancaremos novamente

[]s

Patropi - Moderador

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 17/07/2014 6:58 am
depoisteconto
(@depoisteconto)
Posts: 183
Estimable Member
Topic starter
 

Caros, bom dia!

Dando continuidade ao tópico tenho um userform que fica visível e aplicação fica oculta.

Eu consigo abrir outra pasta de trabalho pelo comando Workbooks.Open FileName:=sPath & FileName mas não consigo deixá-la visível.

Cheguei inserir no código a criação de uma nova instância, mas dá na mesma, abre, mas fica oculta.

Gostaria de fazer via VBA o que é possível fazer manualmente, ou seja, clico no excel, ele abre uma nova pasta de trabalho com as sheets, clico em abrir, seleciono o arquivo no diretório e ele abre visível, mesmo se eu estiver trabalhando com outra aplicação com userform visível e aplicação não.

Deu pra entender? É possível?

At

 
Postado : 17/07/2014 8:40 am
depoisteconto
(@depoisteconto)
Posts: 183
Estimable Member
Topic starter
 

Alguma ideia galera?

At

 
Postado : 18/07/2014 8:04 am