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
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
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
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
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
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
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
Alguma ideia galera?
At